我有以下代码:
var input = "RE1467R31294998782";
var arr = input.split("");
执行后得到:
R,E,1,4,6,7,R,3,1,2,9,4,9,9,8,7,8,2
之后是下面的代码:
arr2[0] = arr[0]+arr[1];
arr2[1] = arr[2]+arr[3];
arr2[2] = arr[4]+arr[5];
arr2[3] = arr[6]+arr[7];
arr2[4] = arr[8]+arr[9];
arr2[5] = arr[10]+arr[11];
arr2[6] = arr[12]+arr[13];
arr2[7] = arr[14]+arr[15];
arr2[8] = arr[16]+arr[17];
结果是:
[RE,14,67,R3,12,94,99,87,82]
最终结果应该是这样的:
RE-1467-R3-1294-99-8782
所以,我想添加一个 -
每次字符串从 alphanumeric or >94
更改时至 numeric and <95
.
但是我该怎么做呢?有什么想法吗?
谢谢你帮助我。
编辑:字符串的长度始终为 18 个字符或 11 个字符。
更多例子:
1ZA2666W6831071503 to 1ZA2-66-6W-6831071503
1Z80A3109303081604 to 1Z-80-A3-109303081604
1Z80A3109603089504 to 1Z-80-A3-10-96-0308-95-04
最佳答案
你可以像这样干净地做
var inputStr = 'RE1467R31294998782';
var splitRegex = /(\w{2})/g;
var pieces = inputStr.match(splitRegex);
var finalStr = [];
var prevDuet = '';
if (pieces && pieces.length > 0) {
pieces.forEach(function(currentDuet) {
if (!prevDuet) {
finalStr.push(currentDuet);
} else if (currentDuet > 94) {
finalStr.push('-' + currentDuet);
} else if ((isNaN(prevDuet) && !isNaN(currentDuet)) ||
(!isNaN(prevDuet) && isNaN(currentDuet))) {
finalStr.push('-' + currentDuet);
} else if (prevDuet > 94) {
finalStr.push('-' + currentDuet);
} else {
finalStr.push(currentDuet);
}
prevDuet = currentDuet;
});
}
alert(finalStr.join(''));
关于javascript - 如何拆分和重建字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31776693/