关于java:关于unicode转义字符的JDK 1.8给出的字符串文字没有被双引号错误正确关闭

JDK 1.8 on unicode escape characters gives string literal is not properly closed by a double-quote error

本问题已经有最佳答案,请猛点这里访问。

你好,智能社区,

我对这个问题做了一些研究,似乎找不到确切问题的答案。

我面临一个奇怪的编译时间问题,Java字符串文字包含Unicode转义代码。

下面是正在考虑的代码段:

1
2
3
4
5
6
7
8
9
10
11
12
    String text = textArea.getText().trim();
    String unicodeReturn ="\u000A";
    text =
           """ +
            text
            .replace("
","%s")
            .replace("
\","\\\")
            .replace("
"","\\"")
            .replace("

","\u000A")
            +
           "
"";

我得到一个编译时错误"字符串文本没有用双引号正确地结束"

1
    String unicodeReturn ="\u000A";

奇怪的是,这条线

1
2
    .replace("
"
,"\u000A")

如果存在相同的Unicode文本,似乎不会导致任何问题。我使用Unicode符号语法已经有一段时间了。如果内存没有出现故障,则格式为uxxxx,其中x是十六进制数字。

我的环境是

  • JDK 1.8 066
  • 麦考斯El Capitan
  • 月蚀火星1

我的问题是:

  • 有人遇到过同样的问题吗?
  • 这是一个已知的JDK 1.8编译器错误吗?
  • 是否有解决方案或解决方法?
  • 有人知道我是否做错了什么吗?
  • (这很令人沮丧,阻止我编译代码)


    在分析文本之前,将转换u个单码,以便

    1
    String unicodeReturn ="\u000A";

    是一样的

    1
    2
    String unicodeReturn ="
    "
    ;

    下面是一个hello world程序的示例,该程序完全由u代码组成https://stackoverflow.com/a/30727799/57695

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    \u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
    \u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
    \u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
    \u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
    \u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
    \u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
    \u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
    \u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
    \u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
    \u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
    \u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d

    相反,你可以

    1
    2
    .replace("
    "
    ,"\\u000A")

    或者只是

    1
    2
    3
    .replace("
    "
    ,"\
    "
    )