0

我有一个看起来像这样的字符串:

var stringOriginal = "72157632110713449SomeDynamicText";

我想将此字符串分成两个子字符串:

  • 一个子字符串是前 17 位数字
  • 一个子字符串是字符串的其余部分

我希望这些存储在两个单独的变量中,如下所示:

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

4 回答 4

2

假设您的字符串是固定的,您可以使用substringorsubstr字符串函数。两者非常相似:

  • substr(start, length)start索引中获取一个值到指定的length(或到末尾,如果未指定)
  • substring(start, end)start索引到end索引(或结尾,如果未指定)获取一个值

因此,您可以通过混合和匹配两者来做到这一点的一种方法是:

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,这会将字符串拆分为 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 回答