-2

オブジェクトの文字列値をエスケープして、nullでない限り引用符で囲むライブラリ関数を知っている人はいますか?

たとえば、関数は次を処理する必要があります。

  • "hello"なので"\"hello\""
  • nullなので"null"
  • Long.valueOf(2L)なので"\"2\""
  • ""なので"\"\""
  • "I\'m \"quoted\""なので"\"I\\\'m \\\"quoted\\\""

明らかにこれをJavaで実装するのは簡単ですが、既存のライブラリ(JDK、Commons Lang、Springなど)で関数を探しています。これが以前に行われていなかった場合は驚きます。

参考までに、これはオブジェクトをJavaScript文字列に変換するためのものです。

4

3 に答える 3

2

本当に引用を忘れてください。Java を JS に書きたい場合は、Jackson を使用します。

import java.util.Date;

import org.codehaus.jackson.map.ObjectMapper;

public class Teste {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        printAsJs(null);
        printAsJs(5L);
        printAsJs("Hello!");
        printAsJs(new Date());
    }

    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    public static void printAsJs(Object o) throws Exception {
        System.out.println(OBJECT_MAPPER.writeValueAsString(o));
    }

}

JS としてフォーマットするために追加のハンドラーが必要な場合は、必要に応じて ObjectMapper を拡張します。

ありがとう、また来てね

于 2013-01-15T17:47:56.867 に答える
0

あなたの要件は

  • 出力を引用符で囲みます
  • 引用符をエスケープ
  • 異なる処理null(周囲の引用符なし)

要件を満たすライブラリメソッドはわかりません。

とにかく、それは一行の方法で実装することができます:

public static String quoteAndEscape(Object o) {
    return o == null ? "null" : "\"" + StringEscapeUtils.escapeJava(String.valueOf(o)) + "\"";
}
于 2013-01-15T17:09:47.997 に答える
0

StringUtilsを使用して独自に作成できます。

import static org.apache.commongs.lang.StringUtils.*;
import org.apache.commons.lang.StringEscapeUtils.*;

public void quote(String x) {
  return escapeJavaScript(defaultString(x, "null").replaceFirst("^(.*)$", "\"$1\"")));
}
于 2013-01-15T16:46:02.590 に答える