【问题标题】:Complex string replacing复杂的字符串替换
【发布时间】:2017-09-17 05:43:15
【问题描述】:

我正在做一个项目,我收到的一些数据并不完全符合我的要求,并且必须在使用前对其进行编辑。它有以下格式:

"((123.456 456.321 789.123, 1122.1 2211.2 7515) (12.1212 4567.01 111.111, 123.123 456.456 789.789, 7515 71315.125 0))"

有没有办法从每个逗号分隔的集合中快速删除第三个数字?这些数据是以字符串形式出现的,所以我猜测是某种复杂的 RegEx 魔法来选择然后删除它?

编辑:

对不起,我忘了输入我想要的输出!应该是这样的:

"((123.456 456.321, 1122.1 2211.2) (12.1212 4567.01, 123.123 456.456, 7515 71315.125))"

【问题讨论】:

  • 请阅读How to What types of questions should I avoid asking? 并提供MCVE : Minimal, Complete, and Verifiable Example。如果周围的人可以轻松阅读并理解您的意思或问题所在,他们将更愿意提供帮助:)
  • “第三个数字”是指:789.123,还是(如在第三个括号中):7515 71315.125 0。您是否期望输出为:“( (123.456 456.321,1122.12211.2)(12.1212 4567.01,123.123 456.456,7515 71315.125))“或”((123.456 456.321 789.123,11221 2211.2 7515)(12.1212 4567.01 111.111,123.123 456.456 789.789)“。此外,正如您所提到的,输入是一个字符串。输出是字符串吗?
  • 这是什么数据?你如何解析/使用它?你不能忽略那个地方的第三个值吗?
  • 请发布所需输出的样本

标签: javascript regex typescript


【解决方案1】:

我猜你可以使用类似的东西:

my_string = "((123.456 456.321 789.123, 1122.1 2211.2 7515) (12.1212 4567.01 111.111, 123.123 456.456 789.789, 7515 71315.125 0))";
result = my_string.replace(/\(([^,]+),([^,]+),([^,]+)\)/g, "($1,$2)");
console.log(result);

【讨论】:

    【解决方案2】:

    my_string = "((123.456 456.321 789.123, 1122.1 2211.2 7515) (12.1212 4567.01 111.111, 123.123 456.456 789.789, 7515 71315.125 0))";
    result = my_string.replace(/((?:[0-9]+)(?:\.[0-9]+)? (?:[0-9]+)(?:\.[0-9]+)?) ([0-9]+)(\.[0-9]+)?/g, "$1");
    console.log(result);

    【讨论】: