【问题标题】:Replace ,(comma) by .(dot) and .(dot) by ,(comma)将 ,(comma) 替换为 .(dot) 和 .(dot) 替换为 ,(comma)
【发布时间】:2016-03-18 05:17:13
【问题描述】:

我有一个字符串"1,23,45,448.00",我想用小数点替换所有逗号,用逗号替换所有小数点。

我需要的输出是“1.23.45.448,00”

我尝试将, 替换为.,如下所示:

var mystring = "1,23,45,448.00"
alert(mystring.replace(/,/g , "."));

但是,在那之后,如果我尝试用, 替换.,它也会用, 替换第一个替换的.,导致输出为"1,23,45,448,00"

【问题讨论】:

  • 所以?什么不适合你?
  • @AdamAzad 首次替换时 .(or comma) 将使另一个替换恢复第一个替换。
  • @Tushar,这些细节应该出现在问题中,而不是评论中。高质量的问题应该足够好地描述问题,而无需在 cmets 中的问题详细信息中添加 essential。一个好的描述流程是说1)我想要发生的事情然后2)我在做什么最后是3)实际发生的事情
  • @IvayloSlavov 你说得对,因为这是OP的第一个问题,问题的质量是,编辑添加更多细节。 :)
  • @Tushar,现在好多了。很高兴看到质量改进建议被认真对待:)

标签: javascript regex


【解决方案1】:

replace 与回调函数一起使用,该函数将, 替换为.,将. 替换为,。函数的返回值将用于替换匹配的值。

var mystring = "1,23,45,448.00";

mystring = mystring.replace(/[,.]/g, function (m) {
    // m is the match found in the string
    // If `,` is matched return `.`, if `.` matched return `,`
    return m === ',' ? '.' : ',';
});

//ES6
mystring = mystring.replace(/[,.]/g, m => (m === ',' ? '.' : ','))

console.log(mystring);
document.write(mystring);

正则表达式: 正则表达式 [,.] 将匹配任何一个逗号或小数点。

String#replace() 与函数回调将匹配作为参数 (m),它是 ,.,并且从函数返回的值用于替换匹配。

所以,当字符串中的第一个 , 匹配时

m = ',';

并且在函数return m === ',' ? '.' : ',';

等价于

if (m === ',') {
    return '.';
} else {
    return ',';
}

所以,基本上这是将字符串中的, 替换为.. 替换为,

【讨论】:

  • 能否请您解释一下这一行发生了什么:return m === ',' ? '.' : ',';
  • @snookieordie,未来见this
  • @snookieordie 当 m==',' 时会替换成 '.'其他明智的','将被接受。'?条件运算符。
【解决方案2】:

Tushar 的方法没有错,但这里有另一个想法:

myString
  .replace(/,/g , "__COMMA__") // Replace `,` by some unique string
  .replace(/\./g, ',')         // Replace `.` by `,`
  .replace(/__COMMA__/g, '.'); // Replace the string by `.`

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2017-08-22
    • 1970-01-01
    • 2013-07-31
    相关资源
    最近更新 更多