【问题标题】:Replace all semicolon with plus sign except last用加号替换所有分号,除了最后一个
【发布时间】:2020-12-28 04:42:06
【问题描述】:

我想用加号 (+) 替换所有分号 (;),除了最后一个分号。

前-

我有这样的东西-

  • 苹果;
  • 香蕉;
  • 苹果;香蕉;
  • 苹果;香蕉;橙子;
  • 苹果;香蕉;橙子;芒果;

我想得到这样的结果 -

  • 苹果;
  • 香蕉;
  • 苹果+香蕉;
  • 苹果 + 香蕉 + 橙子;
  • 苹果 + 香蕉 + 橙子 + 芒果;

目前为止我尝试过

replace(/;/g, ' + ')

但这会替换每个分号。

一行/单词的大小是动态的,即逐行变化。

【问题讨论】:

  • @FarrukhChishti 显然是因为这是一个“为我编写代码”的问题,没有尝试自己解决。
  • @FarrukhChishti 但也许他们没有注意到文本中的尝试,因为它没有突出显示为代码。
  • @FarrukhChishti 哪里说你必须评论?
  • @Barmar:1. 他通过指定他使用的正则表达式提供了一个解决方案。 2. 即使这是一个“为我编写问题的代码”,downvoter 也必须明确指定这一点。您可以争辩说用户应该先阅读手册,但在这种情况下,没有理由相信他没有阅读手册。此外,通过至少添加简短评论来为新用户提供一点影响力是公平的。否则,我们最终会从这个门户中追捕每个新用户。

标签: javascript pentaho kettle rhino


【解决方案1】:

使正则表达式在; 之后需要另一个字符,您可以使用捕获组将其复制到结果中。

s.replace(/;(.)/g, ' + $1')

字符串的末尾不会有后面的字符,所以不会匹配。

【讨论】:

    【解决方案2】:

    look ahead

    console.log("A;".replace(/;(?=[^;]*;)/g,' + '));
    console.log("A;B;".replace(/;(?=[^;]*;)/g,' + '));
    console.log("A;B;C;".replace(/;(?=[^;]*;)/g,' + '));
    console.log("A;B;C;D;".replace(/;(?=[^;]*;)/g,' + '));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-19
      • 2012-12-03
      • 2012-06-02
      • 2014-03-26
      • 2012-03-29
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多