3
String foo = "a3#4#b";
String afterPunctutationRemoval = foo.replaceAll("[,.;:?!'-_\"/()\\{}]", "");
System.out.println(afterPunctutationRemoval);

結果として「a##b」が表示されますが、その理由を誰かに説明してもらえますか?

文字列をそのまま返してはいけませんか?

4

3 に答える 3

11

文字クラスには、数字にも一致する範囲'..が含まれています。_

-を文字クラスの最初または最後に置きます。

foo.replaceAll("[,.;:?!'_\"/()\\{}-]", "")

またはそれを脱出する:

foo.replaceAll("[,.;:?!'\\-_\"/()\\{}]", "");
于 2012-05-04T18:32:52.060 に答える
5

'-_'との間のすべての文字に一致し_ます。

于 2012-05-04T18:32:40.693 に答える
0

他の二人が言ったように、-キャラクターを脱出してください- \\-

また、\\{と同じように評価し{ます、これは意図されていましたか?そうでない場合は、円記号をエスケープしてみてください-\\\\{

于 2012-05-07T08:03:04.663 に答える