2017-10-03 4 views
1

Ich habe einen JavaScript-Code in Java Nashorn-Engine eval. So etwas wie diesesJavascript: replaceAll innerhalb der Eval funktioniert nicht

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

Hier möchte ich alle Vorkommen von \n und \r mit einfachen Raum ersetzen. Aber , wenn ich das laufen bekomme ich Fehler:

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

+2

Vielleicht ist das Problem, dass der Code eine enge Zitat fehlt. – Pointy

+0

@Pointy: Mein Code verpasst kein abschließendes Zitat. Wenn ich '.replaceAll()' entferne, funktioniert es gut. –

Antwort

4

Sie machen Fehler, nicht den umgekehrten Schrägstrich von \n entkommen.

Wenn Sie .replaceAll('\n', '<somethng>') tun, suchen Sie buchstäblich nach newline und ersetzen, die Suche nach \n Zeichenfolge nicht gleich ist.

Hier ist, wie Sie mit Entkommen tun sollten:

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

Auf der Bemerkung am Rande: BTW, ich bin daran interessiert zu wissen, warum Sie \r ersetzt werden, es ist nicht viel Gebrauch dies zu tun, da es nicht allein verwendet wird heutzutage sehr oft. Hier sind die Definitionen von \r und \n.

\r = CR (Carriage Return) // bevor X als neue Zeile Zeichen in Mac OS Gebrauchte

\n = LF (Line Feed) // Wird als Zeilenendmarke in Unix/Mac OS X

\r\n = CR + LF // als neue Zeile Zeichen in Windows Gebrauchte

Verwandte Themen