jQueryで最初に見つかった数値から文字列を分割するための最良の方法は何ですか。
例:Speelhof(STE) 0 /W301
文字列を2つの部分に分割したい(分割は最初に見つかった番号で発生する必要があります)
結果は2つの部分になります:
Speelhof(STE)
と0 /W301
文字列は異なる番号で異なる可能性があるため、任意の番号からサブストリングする方法が必要になります...
誰かが私を助けることができますか?ありがとう!
.split
区切り文字を消費するため、必要ありません。.match
正規表現で使用できます。
"Speelhof(STE) 0 /W301".match(/^(\D+)(.*)$/);
これにより、文字列自体、一致する部分\D+
(1つ以上の非数字)および.*
(残り)の3つの要素を持つ配列が得られます。したがって、次のように使用できます。
var arr = "Speelhof(STE) 0 /W301".match(/^(\D+)(.*)$/);
var first = arr[1]; // "Speelhof(STE) "
var second = arr[2]; // "0 /W301"
この問題は、正規表現の完璧な候補です。
var match = "Speelhof(STE) 0 /W301".match(/^(.+)(\d.+)$/);
次に、返された配列の要素として2つのコンポーネントにアクセスできます:match[1]
およびmatch[2]
。
ここでjQueryを使用する必要はありません。
パターンがどのように機能するかを説明するには:^
文字列の始まりを示します。任意の文字()の(.+)
1つ以上()を示し、括弧はこのグループをキャプチャし、返される配列内のグループにアクセスできるようにします。2番目のグループは、最初のグループと同様に、数字の後に1つ以上の任意の文字が続きます。文字列の終わりを示します。+
.
\d
.+
$
あなたが言ったようにあなたが文字列に数字を持っていると仮定します。文字列を調べて、文字列の分割点として最初の数字を見つけることができます。
str = "Speelhof(STE) 0 /W301";
for(i=0; i < str.length; i++)
{
if(parseInt(str[i]) >= 0 && parseInt(str[i]) <= 9)
break;
}
firstPart = str.substring(0, i);
secondPart = str.substring(i+1, str.length);