0

次のような文字列があります。

var stringOriginal = "72157632110713449SomeDynamicText";

この文字列を 2 つの部分文字列に分けたい:

  • 1 つの部分文字列は最初の 17 桁です
  • 1 つの部分文字列は文字列の残りの部分です

次のように、これらを 2 つの個別の変数に格納します。

var string1 = "72157632110713449"; //First static 17 digits
var string2 = "SomeDynamicText";   // Dynamic Text
4

4 に答える 4

2

文字列が固定されていると仮定すると、substringまたはsubstr文字列関数を使用できます。この 2 つは非常によく似ています。

  • substr(start, length)指定された(指定されていない場合は最後までの)startインデックスから値を取得しますlength
  • substring(start, end)startインデックスからendインデックス (指定されていない場合は末尾) までの値を取得します

したがって、この 2 つを組み合わせて一致させる方法の 1 つは、次のようになります。

var string1 = stringOriginal.substring(0, 17);
# interestingly enough, this does the same in this case
var string1 = stringOriginal.substr(0, 17);

var string2 = stringOriginal.substr(17);

ただし、より洗練されたソリューションが必要な場合 (固定長の数字ではない場合など) は、正規表現を使用してみてください。

var regex   = /(\d+)(\w+)/;
var match   = regex.exec(stringOriginal);
var string1 = match[1]; // Obtains match from first capture group
var string2 = match[2]; // Obtains match from second capture group

もちろん、これは複雑さを増しますが、より柔軟です。

于 2012-12-10T05:16:38.710 に答える
1

どうぞ:

string1 = stringOriginal.substring(0, 17);
string2 = stringOriginal.substring(17, stringOriginal.length);

また

string2 = stringOriginal.substring(17); 
//Second parameter is optional. The index where to stop the extraction. 
//If second parameter is omitted, it extracts the rest of the string
于 2012-12-10T05:08:49.813 に答える
0

これは、最初の 17 文字が常に string1 に入り、残りが string2 になることを前提として、string を var に分割します。

var string1 = stringOriginal.substring(0,17);
var string2 = stringOriginal.substring(17,stringOriginal.length);
于 2012-12-10T05:09:31.467 に答える
0

長さに関係なく、最初の数字を残りの数字から分離して文字列を分割するとします。

 string = string.match (/^(\d+)(.*)/) || [string, '', ''];

string[1]最初の数字、string[2]残りの文字列を保持し、元の文字列はstring[0].

stringが数字で始まらない場合はstring[0]、元の文字列を保持し、空の文字列になりますstring[1]string[2]

コードを次のように変更します。

 string = string.match (/^(\d*)(.*)/);

最初の数字を含まない文字列はstring[1]空になり、最初の文字列string[2]と同じ値になります。string[0]この場合、一致が失敗した場合を処理する必要はありません。

于 2012-12-10T06:11:20.747 に答える