6

JSP:

<% final String data = "some test with ' single quotes"; %>
<script>
    var str = '<%= data %>';
<script>

結果は (JavaScript):

var str = 'some test with ' single quotes';

キャッチされていない SyntaxError: 予期しない識別子

\'JavaScript エラーを回避するために、この一重引用符を次のように置き換えるにはどうすればよいですか?

4

3 に答える 3

6

escapeEcmaScriptApache Commons Lang パッケージのメソッドを使用します。

見つかった値を EcmaScript 文字列形式にエスケープします。引用符と制御文字 (タブ、バックスラッシュ、cr、ff など) を正しく処理します。タブは と の文字'\\'になり't'ます。

Java 文字列と EcmaScript 文字列の唯一の違いは、EcmaScript では一重引用符とスラッシュ ( /) がエスケープされることです。

例:

input string: He didn't say, "Stop!"

output string: He didn\'t say, \"Stop!\"

于 2013-03-22T16:38:50.257 に答える
3

二重引用符、改行、タブ、その他多くのものもエンコードする必要があることに注意してください。それを行う 1 つの方法は、org.apache.commons.lang.StringEscapeUtilsを使用することです。

public class JavaScriptEscapeTest {

    public static void main(String[] args) throws Exception {

        String str = FileUtils.readFileToString(new File("input.txt"));
        String results = StringEscapeUtils.escapeEcmaScript(str);
        System.out.println(results);

    }

}

入力.txt

これは、JavaScript 用に「エスケープ」したい「テキスト」です。ここでいくつかの特殊文字を試してみます: \ "

出力

これは、\r\nJavaScript 用に \"エスケープ\" したい \"テキスト\" です。\r\nここでいくつかの特殊文字を試してみます: \ \"

于 2013-03-22T16:39:07.623 に答える
-1

文字列を単純にダブルエスケープして、実際に a の\後に a が続くようにすることを検討してい'ますか?

<% final String data = "some name with \\' single quote"; %>

JavaScript コードから、文字列置換機能を使用できます。

var str2 = str1.replace("'","\\'"); 
于 2013-03-22T16:29:36.300 に答える