如何从javascript中的字符串中获取子字符串?

时间:2012-12-10 05:05:13

标签: javascript indexing substring

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

var stringOriginal = "72157632110713449SomeDynamicText";

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

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

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

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

4 个答案:

答案 0 :(得分:2)

假设您的字符串已修复,您可以使用substringsubstr字符串函数。两者非常相似:

  • 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

当然,这增加了复杂性,但更灵活。

答案 1 :(得分: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

答案 2 :(得分:0)

这会将字符串拆分为变量,因为前17个字符总是进入string1而其余字符进入string2。

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

答案 3 :(得分: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]相同的值,即初始字符串。在这种情况下,不需要处理失败匹配的情况。