2011-03-01 6 views
2

与えられた文字列の中のすべての文字(例:'"\)にバックラッシュを付加する必要があります。例えば文字の前に

は、文字列

He said "I don't know." 

与えられたことは、私はJavaでこれを行うにはどうすればよい

He said \"I don\'t know.\" 

に置き換える必要がありますか?リテラルJava文字列、二重引用符でこれを使用して、両方のバックスラッシュをエスケープする必要があるために

["'\\] 

答えて

6

は、この正規表現を試してみてください。

置換文字列は、これを次のようになります。

\\$0 
ここ

$0は試合への参照です。バックスラッシュをエスケープする必要があります。それ以外の場合は$がリテラルになります。ここでもバックスラッシュをJava文字列リテラルでエスケープする必要があります。結果のコードは次のようになります。

s = s.replaceAll("[\"'\\\\]", "\\\\$0"); 

はそれをオンラインで参照してください:ideone

+0

おかげで1

 Pattern p = Pattern.compile("(\"|\')"); StringBuilder sb = new StringBuilder(); int start = 0; Matcher m = p.matcher(s); while (m.find()) { int end = m.start(); sb.append(s.substring(start, end)); sb.append("\\").append(m.group(1)); start = m.end(); } sb.append(s.substring(start)); String result = sb.toString(); 

だかもしれません!私はideoneを見たことがないし、それは素晴らしい見えます。 –

-1

引用符を置き換えるために、引用符/['"]/g

  • を検索するには、次の正規表現

    1. を使用してみてください\$&

    希望作品です。

  • +0

    あなたの正規表現はバックスラッシュと一致しません。また、置換文字列内のバックスラッシュを別のバックスラッシュでエスケープする必要があります。これはあなたが* JavaScript *で作業していると仮定しています。 ** Java **ソリューションについては、@ Markの答えをご覧ください。 –

    +0

    私はgskinner appから汎用フォーマットを与えました。特定の言語用ではありませんでした。コメントしてくれてありがとう。 – Saravanan

    +0

    [RegExr](http://www.gskinner.com/RegExr/)は、ECMAScriptの正規表現標準に準拠するActionScriptで動作しますが(実際ははるかに強力です)そこには多くのオンラインテスターがあります。質問で指定されたフレーバーに合ったものを使用すると、あなたの答えははるかに役立ちます。 [RegexPlanet](http://www.regexplanet.com/simple/index.html)は、Javaのための良いものです。 –

    0

    がより簡単な方法であるが、ここでSはあなたの入力文字列の説明とコードを操作するための

    関連する問題