8

各行が中括弧で始まり中括弧で終わるテキスト ファイルがあります。

{aaa,":"bbb,ID":"ccc,}  
{zzz,":"sss,ID":"fff,}  
{ggg,":"hhh,ID":"kkk,} ...  

文字間にスペースはありません。次のように、中括弧を削除して空白に置き換えようとしています。

String s = "{aaa,":"bbb,ID":"ccc,}";
String n = s.replaceAll("{", " ");  

次を使用して中括弧をエスケープしようとしました:

String n = s.replaceAll("/{", " "); 
String n = s.replaceAll("'{'", " "); 

エラーが発生するため、これはどれも機能しません。誰かが解決策を知っていますか?

4

3 に答える 3

23

次のように String を定義することはできません。

String s = "{aaa,":"bbb,ID":"ccc,}";

エラーはここにあります。次のように、文字列内の二重引用符をエスケープする必要があります。

String s = "{aaa,\":\"bbb,ID\":\"ccc,}";

これで、呼び出してもエラーは発生しません

s.replaceAll("\\{", " ");

IDE (Eclipse のようなプログラム) を使用している場合、文字列の色が標準の黒とは異なることに気付くでしょう (たとえば、メソッドやセミコロン [;] の色)。文字列がすべて同じ色 (通常は茶色、場合によっては青色) の場合は問題ありません。内部に黒い色があることに気付いた場合は、何か問題があります。通常、二重引用符 ["] の後に置く唯一のものは、プラス [+] の後に、文字列に追加する必要があるものです。例:

String firstPiece = "This is a ";
// this is ok:
String all = s + "String";
//if you call:
System.out.println(all);
//the output will be: This is a String

// this is not ok:
String allWrong = s "String";
//Even if you are putting one after the other the two strings, this is forbidden and is a Syntax error.
于 2013-09-13T22:26:51.920 に答える
18

String.replaceAll() は正規表現を使用し、正規表現には'{'文字のエスケープが必要です。したがって、次のように置き換えます。

s.replaceAll("{", " ");

と:

s.replaceAll("\\{", " ");

二重エスケープに注意してください。1 つは Java 文字列用で、もう 1 つは正規表現用です。

ただし、ここでは単一の文字を照合するだけなので、正規表現は必要ありません。replaceしたがって、代わりにメソッドを使用できます。

s.replace("{", " "); // Replace string occurrences
s.replace('{', ' '); // Replace character occurrences

または、正規表現バージョンを使用して、両方の中かっこを一気に置き換えます。

s.replaceAll("[{}]", " ");

中括弧は文字クラス ( []) 内にあるため、ここではエスケープは必要ありません。

于 2013-09-13T22:38:02.737 に答える