Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的引用字符串_Java_String - Fatal编程技术网

Java中的引用字符串

Java中的引用字符串,java,string,Java,String,有人知道库函数可以用引号转义和包围对象的字符串值,除非它为null吗 例如,该函数应处理: “你好”作为“你好” null作为“null” Long.valueOf(2L)as“2\” ”作为“\”\” “我被引用”为“我被引用” 显然,这在Java中实现起来很简单,但我正在现有库中寻找一个函数(例如JDK、Commons Lang、Spring…),如果以前没有这样做,我会感到惊讶 作为参考,这用于将对象转换为JavaScript字符串。您可以使用StringUtils编写自己的字符串 i

有人知道库函数可以用引号转义和包围对象的字符串值,除非它为null吗

例如,该函数应处理:

  • “你好”
    作为
    “你好”
  • null
    作为
    “null”
  • Long.valueOf(2L)
    as
    “2\”
  • 作为
    “\”\”
  • “我被引用”
    “我被引用”
显然,这在Java中实现起来很简单,但我正在现有库中寻找一个函数(例如JDK、Commons Lang、Spring…),如果以前没有这样做,我会感到惊讶


作为参考,这用于将对象转换为JavaScript字符串。

您可以使用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\"")));
}
你的要求是

  • 用引号括起输出
  • 转义引号
  • 句柄
    null
    不同(无周围引号)
我不知道有什么库方法可以满足您的要求

无论如何,它可以用一行方法实现:

public static String quoteAndEscape(Object o) {
    return o == null ? "null" : "\"" + StringEscapeUtils.escapeJava(String.valueOf(o)) + "\"";
}

忘了引用吧,真的。如果你想将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


感谢您再次光临

“函数用引号将对象的字符串值括起来,除非它为null”。那么为什么
null
应该变成
“null”
?它看起来像一个单行方法,不是吗?
返回arg==null?返回“null”:返回“\”“+string.valueOf(arg)+”";?让我问你:出于任何原因,你在构建SQL字符串吗?与StringEscapeUtils结合也很好——不管怎样,在JDBC中使用参数都是你的朋友,真的(我被称为“小Bobby表”):)是的,这是一个微不足道的方法,所以如果以前没有实现过,我会感到惊讶。不,这不是针对SQL字符串的,但你说得很对——我确实也需要转义。我会相应地调整这个问题。但是
StringEscapeUtils
不会做OP想要做的事情…实际上,他现在需要StringEscapeUtils:)进一步:String.valueof(o)测量对象有一个有效的toString()方法,否则它会返回不想要的结果输入是字符串,对吗?如果您想要更好的东西,请编写您自己的框架(ffs:)差不多。这不会处理空值,但这很容易修复。是否有一个库函数已经这样做了?@Kkkev不处理
null
,这是什么意思?如果你通过
null
,你会得到
“null”
,就像你在示例中指定的那样。这会为
null
返回
“null\”
。我误解了你的示例,请参阅我的编辑。