String foo = "a3#4#b";
String afterPunctutationRemoval = foo.replaceAll("[,.;:?!'-_\"/()\\{}]", "");
System.out.println(afterPunctutationRemoval);
結果として「a##b」が表示されますが、その理由を誰かに説明してもらえますか?
文字列をそのまま返してはいけませんか?
String foo = "a3#4#b";
String afterPunctutationRemoval = foo.replaceAll("[,.;:?!'-_\"/()\\{}]", "");
System.out.println(afterPunctutationRemoval);
結果として「a##b」が表示されますが、その理由を誰かに説明してもらえますか?
文字列をそのまま返してはいけませんか?
文字クラスには、数字にも一致する範囲'
..が含まれています。_
-
を文字クラスの最初または最後に置きます。
foo.replaceAll("[,.;:?!'_\"/()\\{}-]", "")
またはそれを脱出する:
foo.replaceAll("[,.;:?!'\\-_\"/()\\{}]", "");
'-_
'
との間のすべての文字に一致し_
ます。
他の二人が言ったように、-
キャラクターを脱出してください- \\-
。
また、\\{
と同じように評価し{
ます、これは意図されていましたか?そうでない場合は、円記号をエスケープしてみてください-\\\\{