1

次のような文字列を変換する必要があります

"UTC - 9:30 hours"

分まで。

何かのようなもの:

var date = "UTC - 9 : 10 hours";
date = date.replace("UTC",'').replace("hours",'').replace(/\s+/g, '');
var hours = parseInt( date.split(":")[0] );
var minutes = parseInt ( date.split(":")[1] || 0 );
var sign = hours / Math.abs(hours);
var totalMinutes = ( hours * 60 ) + ( sign * minutes );

任意の正規表現を使用する簡単な方法はありますか? ちょっと興味があるんだけど。

4

2 に答える 2

2

なぜ単純ではないのですか:

var take     = "UTC - 9:30 hours".split(' ')[2].split(':');
var minutes  = parseFloat(take[0])*60 + parseFloat(take[1]);

alert(minutes); // 570

また :var minutes = Number(take[0])*60 + Number(take[1]);

jsBin デモ

于 2012-07-28T02:26:14.640 に答える
1

我慢してください…こんな些細なことですか?

string input = "UTC - 9:30 hours";
Match m = Regex.Match(input, @"(?<sign>-?)\s?(?<hours>\d+)\s?:\s?(?<minutes>\d+)");
int sign = m.Groups["sign"].Value == "-" ? -1 : 1;
int hours = int.Parse(m.Groups["hours"].Value);
int minutes = int.Parse(m.Groups["minutes"].Value);
int totalMinutes = (hours * 60 + minutes)*sign;

ああ、すみません...あなたはjavascriptについて話しました。私はac#コードを投稿しました..まあ気にしないでください。とにかく、正規表現は有効なままです。

しかし、あなたの質問に答えるには、ご覧のとおり簡単ではありません。

ps:あなたの主張が理解できなかったという理由だけで、記号を別の方法で処理しました?。より緩いパターンを許可するためだけに多くの演算子があります。

于 2012-07-28T01:27:19.403 に答える