web-dev-qa-db-ja.com

文字列の括弧文字を削除する方法(Java)

Javaを使用して、文字列内のすべての種類の角かっこ(例:[]、()、{})を削除したい。

私はこのコードを使用してみました:

String test = "watching tv (at home)"; 
test = test.replaceAll("(","");
test = test.replaceAll(")","");

しかし、それは機能していません、私を助けてください。

すべての角かっこ、中かっこ、および角かっこを含むすべての句読点を削除するには、質問に従って:

String test = "watching tv (at home)"; 
test = test.replaceAll("\\p{P}","");
18
StackFlowed

replaceAllの最初の引数は正規表現を取ります。

すべてのブラケットは正規表現で意味を持ちます:ブラケットは正規表現で参照するために使用されます キャプチャグループ 、角括弧は 文字クラス に使用され、括弧は一致した文字の出現に使用されます。したがって、それらはすべてエスケープする必要があります...しかし、ここでは、文字を単に 文字クラス で囲むことができます。

test = test.replaceAll("[\\[\\](){}]","");
23
Reimeus

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"
4
hwnd

ブラケットは正規表現の一部として扱われるため、エスケープする必要があります

String test = "watching tv (at home)"; 
test = test.replaceAll("\\(","");
test = test.replaceAll("\\)","");

また、すべてのブラケットを削除してみてください

String test = "watching tv (at home)"; 
test = test.replaceAll("[\\(\\)\\[\\]\\{\\}]","");
2
AbstractChaos

パフォーマンスの向上には_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

2
Javi Fernández

subject = StringUtils.substringBetween(subject、 "["、 "]")

0