我有一个看起来像这样的字符串:
var stringOriginal = "72157632110713449SomeDynamicText";
我想将此字符串分成两个子字符串:
我希望这些存储在两个单独的变量中,如下所示:
var string1 = "72157632110713449"; //First static 17 digits
var string2 = "SomeDynamicText"; // Dynamic Text
答案 0 :(得分:2)
假设您的字符串已修复,您可以使用substring
或substr
字符串函数。两者非常相似:
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]
相同的值,即初始字符串。在这种情况下,不需要处理失败匹配的情况。