我想用逗号和逗号替换点的所有点,并且想知道做这件事的最佳做法是什么。如果我按顺序执行,那么这些步骤将相互覆盖。用逗号替换逗号和点用逗号
例如: 1,234.56(更换之后的逗号) - > 1.234.56(更换点后) - > 1,234,56
这显然不是我想要的。
我猜想一个选项是分割字符,然后使用相反的字符加入。有没有更容易/更好的方法来做到这一点?
我想用逗号和逗号替换点的所有点,并且想知道做这件事的最佳做法是什么。如果我按顺序执行,那么这些步骤将相互覆盖。用逗号替换逗号和点用逗号
例如: 1,234.56(更换之后的逗号) - > 1.234.56(更换点后) - > 1,234,56
这显然不是我想要的。
我猜想一个选项是分割字符,然后使用相反的字符加入。有没有更容易/更好的方法来做到这一点?
你可以使用一个回调
"1,234.56".replace(/[.,]/g, function(x) {
return x == ',' ? '.' : ',';
});
如果你打算更换两个以上的字符,你可以使用地图来完成替换操作创建一个方便的功能
function swap(str, swaps) {
var reg = new RegExp('['+Object.keys(swaps).join('')+']','g');
return str.replace(reg, function(x) { return swaps[x] });
}
var map = {
'.':',',
',':'.'
}
var result = swap("1,234.56", map); // 1.234,56
做到这一点使用占位符文本阶段:
var foo = '1,234.56';
foo = foo
.replace(',', '~comma~')
.replace('.', '~dot~')
.replace('~comma~', '.')
.replace('~dot~', ',')
@ adeneo的答案实际上更好。 –
你可以做到以下几点:
var str = '1,234.56';
var map = {',':'.','.':','};
str = str.replace(/[,.]/g, function(k) {
return map[k];
});
你可以使用一个for循环。喜欢的东西:
var txt = document.getElementById("txt");
var newStr = "";
for (var i = 0; i < txt.innerHTML.length; i++){
var char = txt.innerHTML.charAt(i);
if (char == "."){
char = ",";
}else if (char == ","){
char = ".";
}
newStr += char;
}
txt.innerHTML = newStr;
这里有一个小提琴: http://jsfiddle.net/AyLQt/1/
不得不说虽然,@ adenoeo的答案是方式更光滑:d
在javascript中您可以使用
var value = '1.000.000,55';
var splitValue = value.split('.');
for (var i = 0; i < splitValue.length; i++) {
var valPart = splitValue[i];
var newValPart = valPart.replace(',', '.');
splitValue[i] = newValPart;
}
var newValue = splitValue.join(',');
console.log(newValue);
请举个例子与之合作。 – erosman
你是什么意思?一个例子就是将1,234.56改为1.234,56? –
我看到...我不确定你是如何想要它最终...无论如何,它似乎你已经得到了答案:) – erosman