如何在javascript中拆分带有多个逗号和冒号的字符串?

时间:2014-05-05 10:00:30

标签: javascript regex

如何在JavaScript中拆分包含多个分隔符的字符串?我试图在逗号和:冒号上分开但是,js的split函数只支持一个分隔符。

示例:

materialA:125,materialB:150,materialC:175

我想将这些值拆分为数组,如

materiaA,materialB,materialC

和第二

125,150,175

或者任何人都可以告诉我如何将这些数字乘以常数来得到像

materialA:1250, materialB:1500,materialC:1750. 

5 个答案:

答案 0 :(得分:2)

如果您正在使用正则表达式,则可以使用多个分隔符进行拆分:

.split(/:|,/)

这会给出

["materialA", "125", "materialB", "150", "materialC", "175"] 

答案 1 :(得分:1)

您可以先用逗号分割字符串,然后遍历生成的数组。在该数组中,每个条目都类似于" materialA:125"。从那里,你可以用冒号分割并将每个部分附加到它自己的列表中,或者如果你愿意,只需将后半部分(首先转换为int)再加入到原始字符串中。

即使有人给出了更好的答案,但这里有一些代码可以完成我上面提到的(自从你提问)

var inputString = "materialA:125,materialB:150,materialC:175";

var mats = new Array();
var numbers = new Array();

var temp;
var elements = inputString.split(",");
for(var element in elements){
    temp = elements[element].split(":");
    mats.push(temp[0]);
    numbers.push(parseInt(temp[1]));
}

console.log(mats); // prints ["materialA", "materialB", "materialC"] 
console.log(numbers); // prints [125, 150, 175] 

答案 2 :(得分:1)

完全改变方法,如果您想要做的只是将字符串中的所有数字乘以固定系数,您可以使用string.replace

var string = "materialA:125,materialB:150,materialC:175";
var coef = 10;

var result = string.replace(/\d+/g, function(match){
    return parseInt(match)*coef;
    });

然后print(result)输出字符串

materialA:1250,materialB:1500,materialC:1750

\d[0-9]的快捷方式。

答案 3 :(得分:1)

使用@ mitim方法的示例:

var str = 'materialA:125,materialB:150,materialC:175',
    multiplier = 2;

str = str.split(',').map(function (elem) {
    var parts = elem.split(':');
    parts[1] *= multiplier;
    return parts.join(':');
}).join(',');

这会给你:

materialA:250,materialB:300,materialC:350

答案 4 :(得分:0)

您可以简单地使用以下Regex:

/[:,]/

以下字符串方法:

mystring = 'materialA:125,materialB:150,materialC:175';
result = mystring.split(/[:,]/);

这是Fiddle