1. ホーム
  2. javascript

[解決済み] 最初の空白文字で文字列を分割する

2022-04-20 12:07:24

質問

最初の空白に基づく文字列を分割する最適化された正規表現が得られません。

var str="72 tocirah sneab";

得たい。

[
    "72",
    "tocirah sneab",
]

解決方法は?

スペース文字だけを気にし(タブや他の空白文字は気にしない)、最初のスペースより前のものと最初のスペースより後のものだけを気にするのであれば、このように正規表現を使わなくてもできるのですが、そうでない場合は、次のようにします。

str.substr(0,str.indexOf(' ')); // "72"
str.substr(str.indexOf(' ')+1); // "tocirah sneab"

スペースが全くない場合、1行目は空の文字列を返し、2行目は文字列全体を返すことに注意してください。 そのような状況で望む動作であることを確認してください(あるいは、そのような状況が発生しないことを確認してください)。

やや衒学的な更新です。 であるけれども は事実上すべてのブラウザでサポートされています。 やNode.js、denoなどと同じように。 String.prototype.substr() は ECMAScript の仕様に規範的に追加されたことはありません。実際、このことがあなたに影響を与えることはほとんどありません。しかし、もしそれが気になるのであれば(あるいはリソースに制約のある環境で動作していて String.prototype.substr() この質問に対して、他の多くの人々が提供したすばらしい回答のうちのひとつを使うことができます。 String.prototype.slice() はかなり良い代用品ですが、以下のような場合は変なことになるので注意が必要です。 indexOf()-1 の第2引数に対して slice() . (個人的には、@georgの回答の最後にある正規表現のルックビハインドソリューションが好きですが、これは非常に古いブラウザでは動作しないので、その点には注意してください。