2017-10-03 9 views
1

私はJavaのnashornエンジンevalの中にJavaScriptコードを持っています。このJavascript:eval内のreplaceAllが機能しない

engine.eval("<code>.... print(printIt.substring(1) + '==>Value:' + obj[property].replaceAll('\n', ' ').....<code>"); 

よう 何かがここで私は、簡単なスペースで\n\rのすべての発生を置き換えたいです。 しかし、私はこれを実行すると、私はエラーを取得:

Exception in thread "main" javax.script.ScriptException: :1:426 Missing close quote

+2

たぶん、問題はあなたのコードがクローズ引用符が欠落していることです。 – Pointy

+0

@Pointy:私のコードにはクローズする見積もりがありません。 '.replaceAll()'を削除してもうまく動作します。 –

答えて

4

あなたは\nのバックスラッシュをエスケープしない間違いを犯しています。

.replaceAll('\n', '<somethng>')を実行している場合は、文字通り改行と置換を検索しています。これは\n文字列の検索と同じではありません。ここで

は、あなたがエスケープしてやるべきかです:

追記オン
obj[property].replaceAll('\\n', ' ').replaceAll('\\r', ' ') \\for replacing all newline and carriage return. 

はところで、私はなぜあなたは\rを交換する知ることに興味を持って、それはそれは、単独で使用していないとしてこれをやって、使用の多くではありません最近は非常に頻繁です。ここには\r\nの定義があります。 UNIX/MacのOSの新しい行文字として使用されるX

\n = LF(ラインフィード)//前のMac OSでの改行文字として使用

\r = CR(キャリッジリターン)// X

\r\n = Windowsの

に改行文字として使用されるCR + LF //
関連する問題