删除String中引号之间的注释

时间:2013-04-15 08:18:42

标签: java string

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

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");

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

2 个答案:

答案 0 :(得分:7)

您可以使用replaceAll

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

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


编辑:正如评论中所述,没有必要反驳单引号。

答案 1 :(得分:2)

如果您不需要在评论中包含引号,则可以执行此操作:

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

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

Working example