如何在JavaScript中拆分包含多个分隔符的字符串?我试图在逗号和:
冒号上分开但是,js的split函数只支持一个分隔符。
示例:
materialA:125,materialB:150,materialC:175
我想将这些值拆分为数组,如
materiaA,materialB,materialC
和第二
125,150,175
或者任何人都可以告诉我如何将这些数字乘以常数来得到像
materialA:1250, materialB:1500,materialC:1750.
答案 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。