![](/img/trans.png)
[英]Javascript split to split string in 2 parts irrespective of number of spit characters present in string
[英]JavaScript: Split string by characters only or by characters + number if present
如何将JavaScript字符串按字符或按字符+数字拆分(如果存在)?
例:
只是字符:
var items = "asdaasf";
//I am using
items.split('');
这样就可以了
现在,如果我有数字:
var items = "a2sdaa5sf";
我希望将其拆分为数组,所以结果如下:
[a2,s,d,a,a5,s,f]
因此,如果字母后跟数字,则它算作1个字符。
我会使用正则表达式吗? 语法是什么? 我对RegEx不太熟悉。
在下一个字母为字母的每个位置上进行分割。 可以先行完成:
> "a2sd12a3".split(/(?=[a-z])/i)
["a2", "s", "d12", "a3"]
如果您只想按字符或字符后跟数字进行拆分
var reg = /([a-z]\d*)/g;
var myString = 'something'
myString.match(reg)
@Felix Kling的答案在前瞻性方面更为优雅,但是如果您想坚持最简单的方法,请假设它始终以字符开头。
为了补充@FelixKling的答案,而不必完全依赖正则表达式,您可以相当轻松地重现逻辑:
var input = "a1b2c3de45f6gh78i9j0";
var chunks = [];
var accum = "";
var lastWasDigit = false;
var isDigitRex = /[0-9]/;
Array.from(input).forEach(function (i) {
var isDigit = isDigitRex.exec(i);
if (lastWasDigit && !isDigit) {
chunks.push(accum);
accum = "" + i;
} else {
accum += i;
}
lastWasDigit = isDigit;
})
console.log(chunks);
与亚伯拉罕·亚当的方法相似,但通过使用以下正则表达式进行了更新,使其不区分大小写: /[az]\\d*/ig
var regexVal = /[a-z]\d*/ig;
var test1 = "asdaasf";
var test2 = "a2sdaa5sf";
var test3 = "a2sd12a3";
var test4 = "a1b2c3de45f6gh78i9j0";
var test5 = "a1b2c3De45f6gH78I9j0";
console.log(test1.match(regexVal)); // ["a", "s", "d", "a", "a", "s", "f"]
console.log(test2.match(regexVal)); // ["a2", "s", "d", "a", "a5", "s", "f"]
console.log(test3.match(regexVal)); // ["a2", "s", "d12", "a3"]
console.log(test4.match(regexVal)); // ["a1", "b2", "c3", "d", "e45", "f6", "g", "h78", "i9", "j0"]
console.log(test5.match(regexVal)); // ["a1", "b2", "c3", "D", "e45", "f6", "g", "H78", "I9", "j0"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.