0

データベースに印刷できない文字を含む列があります。

String xyz = "Company Name\r\n Magna";

データベースから取得すると、Java で値が次のように表示されます。

String companyname = "Company Name\\r\\n Magna";"

追加のエスケープ文字を追加します。印刷できない文字を今すぐ削除するにはどうすればよいですか?

companyname.replaceAll("\\p{Cntrl}", ""); // Doesn't work.

を使用StringBufferしても、追加のエスケープ文字のために機能しません。

ご意見をお聞かせください。

4

2 に答える 2

2

データベースにデータを入れる前にデータをエンコードした方法で、自分自身に問題を引き起こしたようです。

最初の例では、文字シーケンスを置き換える aがreplaceAll必要です。例えば'\' 'r''\' 'n'

text = text.replaceAll("\\\\r|\\\\n", "");

リテラルのバックスラッシュ文字に一致させるには、2 回エスケープする必要があることに注意してください。1 回目は文字列リテラル用で、2 回目はバックスラッシュが正規表現のメタ文字であるためです。

しかし、IMO、これに対するより良い修正は、データベースで CR および NL 文字をそのようにエンコードしないことです。エスケープせずにデータベースでそれらを表すことはできませんか?

于 2012-08-18T01:00:01.387 に答える
0

古き良き交換はどうですか:

String text = readfromDatabase();
text = text.replace("\n", "").replace("\r", "");

また

text = text.replaceAll("\\r|\\n", "");

また

text = text.replaceAll("\\r", "").replaceAll("\\n", "");
于 2012-08-18T00:05:26.483 に答える