我想用逗號和逗號替換點的所有點,並且想知道做這件事的最佳做法是什麼。如果我按順序執行,那麼這些步驟將相互覆蓋。用逗號替換逗號和點用逗號
例如: 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