Javaを使用して、文字列内のすべての種類の角かっこ(例:[]、()、{})を削除したい。
私はこのコードを使用してみました:
String test = "watching tv (at home)";
test = test.replaceAll("(","");
test = test.replaceAll(")","");
しかし、それは機能していません、私を助けてください。
すべての角かっこ、中かっこ、および角かっこを含むすべての句読点を削除するには、質問に従って:
String test = "watching tv (at home)";
test = test.replaceAll("\\p{P}","");
replaceAll()
メソッドに渡される最初の引数は正規表現でなければなりません。これらのリテラルブラケット文字と一致させる場合は、\\(
、\\)
をエスケープする必要があります。
次を使用して、角かっこを削除できます。 nicodeプロパティ\p{Ps}
は、あらゆる種類の開き括弧と一致します。 nicodeプロパティ\p{Pe}
は、あらゆる種類の閉じ括弧と一致します。
String test = "watching tv (at home) or [at school] or {at work}()[]{}";
test = test.replaceAll("[\\p{Ps}\\p{Pe}]", "");
System.out.println(test); //=> "watching tv at home or at school or at work"
ブラケットは正規表現の一部として扱われるため、エスケープする必要があります
String test = "watching tv (at home)";
test = test.replaceAll("\\(","");
test = test.replaceAll("\\)","");
また、すべてのブラケットを削除してみてください
String test = "watching tv (at home)";
test = test.replaceAll("[\\(\\)\\[\\]\\{\\}]","");
パフォーマンスの向上には_String.replace
_の代わりに_String.replaceAll
_を使用できます。正確なシーケンスを検索し、正規表現を必要としないためです。
_String test = "watching tv (at home)";
test = test.replace("(", " ");
test = test.replace(")", " ");
test = test.replace("[", " ");
test = test.replace("]", " ");
test = test.replace("{", " ");
test = test.replace("}", " ");
_
テキストを使用している場合は、単語が結合しないようにブラケットを空のスペースに置き換えることをお勧めします:watching tv(at home) -> watching tvat home
subject = StringUtils.substringBetween(subject、 "["、 "]")