3

javascript で正規表現を使用して文字列の 4 番目のスペースを削除する方法を探しています。

例: 「Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)」を「Wed Sep 19 2012」

4

5 に答える 5

14
var s = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
s.split(' ').slice(0, 4).join(' ');

ステップバイステップ:

> s.split(' ')
["Wed", "Sep", "19", "2012", "08:05:07", "GMT-0700", "(PDT)"]
> s.split(' ').slice(0, 4)
["Wed", "Sep", "19", "2012"]
> s.split(' ').slice(0, 4).join(' ')
"Wed Sep 19 2012"

または、代わりにのパラメーターを削除sliceして使用します。limitsplit()

var s = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var newValue = s.split(' ', 4).join(' ');
于 2012-09-23T23:42:55.067 に答える
0

これには本当に正規表現が必要ですか?これは非常に標準化された日付文字列です... 3 文字の曜日、3 文字の月、2 文字の日、4 文字の年... 唯一の問題は、日付がゼロで埋められるかどうかです。

str.substring(0,15);

日付番号が埋め込まれていない場合、15 番目の文字がスペースの場合は 14 文字になります。それ以外の場合は、上記で問題ありません。

于 2012-09-23T23:47:35.453 に答える
0

以下は、文字列から 4 番目のスペース (およびそれに続くすべて) を削除します。

text = text.replace(/^((?:[^ ]* ){3}[^ ]*) [\S\s]*/, "$1");
于 2012-09-23T23:55:30.657 に答える
0

正規表現はこれには最適ではありませんが、次のようにすることができます。

var string = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var regex = /^((\S+\s*?){4})(\s+.*)$/;
var stripped = string.replace(regex, "$1");

これは、スペース以外の後にスペースが続き、その後行末までの4つのケースに一致します。置換では最初の一致が使用され、残りは無視されます。

最初のグループの\s内側は遅延マッチングされるため、末尾のスペースは自動的に取り除かれます。残念ながら、これにより正規表現が遅くなりますが、通常の入力ではそれほど顕著ではありません。

ただし、実際に ISO 標準の日付文字列を解析しようとしている場合は、paddy が正しいので、末尾を切り落とす必要があります。Joao が示唆するように、より通常の処理を行うこともできます。

ほとんどの場合、正規表現はおそらく必要ないことを覚えておいてください。それらは実際にはかなり粗雑なツールです...

于 2012-09-23T23:58:55.297 に答える
0

正規表現を使ってパターンを検索し、そこから文字列を切り捨てた方がいいと思います。

var str = "Wed Sep 19 2012 08:05:07 GMT-0700 (PDT)";
var regEx = new RegExp("\\s\\d+\\:"); // pattern match for ' dd:'
var truncatedStr = str.substring(0, str.search(regEx));

時間の直前の文字列が必要ないことはわかっています。したがって、「dd:」の時間パターンに一致する正規表現を作成します。str.search(regEx) を使用すると、パターンの開始インデックスが返されます。この場合は 15 になります。したがって、メイン文字列で 0 から 15 までの部分文字列を取得すると、必要な結果として "Wed Sep 19 2012" が返されます。

于 2012-09-25T06:34:58.903 に答える