javascript - 如何拆分和重建字符串?

标签 javascript arrays regex replace split

我有以下代码:

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/

相关文章:

javascript - 使用coffeescript时定义Meteor集合; ReferenceError 说集合未定义

Javascript Date() 为某些日期返回错误的工作日

ruby-on-rails - Rspec:测试循环数组,输入 = [],自定义类的输出 =[]。 ruby

javascript - 创建多个唯一的数组 jQuery

c# - String.Format 类实用程序的正则表达式

Java 正则表达式匹配直到字符

c# - 如何更改正则表达式?

javascript - Vue.js:每当您更改 vue 轮播中的幻灯片时如何重新运行代码

javascript - 如何使用canvas javascript对文本进行动画处理并设置最大宽度和高度

javascript - 尝试链接过滤器选项选择