【问题标题】:How do I split a string with multiple commas and colons in javascript? [duplicate]如何在javascript中拆分带有多个逗号和冒号的字符串? [复制]
【发布时间】:2014-06-21 14:13:41
【问题描述】:

如何在 JavaScript 中拆分具有多个分隔符的字符串?我试图用逗号和:冒号分割,但是js的分割功能只支持一个分隔符。

例子:

materialA:125,materialB:150,materialC:175

我想将这两个值分成数组,如

materiaA,materialB,materialC

第二个

125,150,175

或者任何人都可以告诉我如何将这些数字与常数相乘得到类似

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

【问题讨论】:

  • 是的,但我的问题和查询不同!
  • 您应该能够通过该问题中提供的答案找出答案。

标签: javascript regex


【解决方案1】:

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

.split(/:|,/)

这会给

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

【讨论】:

  • 很好,我不知道你可以传入正则表达式(也不知道 | 字符)。我学到了一些新东西。
【解决方案2】:

完全改变方法,如果您只想将字符串中的所有数字乘以固定系数,则可以使用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] 的快捷方式。

【讨论】:

  • 感谢 Robin 工作正常。我正是想要这个结果。非常感谢..
【解决方案3】:

使用@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】:

你可以先用逗号分割字符串,然后循环遍历结果数组。在该数组中,每个条目都类似于“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] 

【讨论】:

  • 是的 mitim,但你能给我一些例子来解释一下,因为我是 javascript 新手。
【解决方案5】:

您可以简单地使用以下正则表达式:

/[:,]/

以及以下字符串方法:

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

这是Fiddle

【讨论】:

  • 我很欣赏你的回答,它工作得很好,并给了我这个结果 materialA:50,materialB:50,materialC:50 但是我怎么能把这些数字乘以常数......就像乘以 10 给我材料A:500,材料B:500,材料C:500
猜你喜欢
  • 1970-01-01
  • 2013-02-03
  • 2011-07-13
  • 2011-04-16
  • 1970-01-01
  • 2017-01-05
  • 2011-08-17
  • 1970-01-01
相关资源
最近更新 更多