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("\\'.*?\\'", "");

'これにより、最初と2番目、およびそれらの間のすべてが置き換えられます""(したがって、それらは削除されます)。


編集:コメントに記載されているように、一重引用符をバックスラッシュする必要はありません。

于 2013-04-15T08:21:11.713 に答える
2

コメント内に引用符を付ける必要がない場合は、次のようにします。

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

引用符、引用符以外の少なくとも 1 つ、次に引用符に一致します。

実施例

于 2013-04-15T08:24:20.167 に答える