2

我需要从字符串中删除注释。使用引号指定注释。例如:

removeComments("1+4 'sum'").equals("1+4 ");
removeComments("this 'is not a comment").equals("this 'is not a comment");
removeComments("1+4 'sum' 'unclosed comment").equals("1+4  'unclosed comment");

我可以遍历字符串的字符,跟踪引号的索引,但我想知道是否有更简单的解决方案(也许是正则表达式?)

4

2 回答 2

7

您可以使用replaceAll

str = str.replaceAll("\\'.*?\\'", "");

这将替换第一个和第二个'以及它们之间的所有内容""(因此,将删除它们)。


编辑:如评论所述,无需反斜杠单引号。

于 2013-04-15T08:21:11.713 回答
2

如果您不需要能够在评论中包含引号,则可以这样做:

input.replaceAll("'[^']+'", "");

它匹配一个报价,至少一个不是报价的东西,然后是一个报价。

工作示例

于 2013-04-15T08:24:20.167 回答