Java Don';t在字符串中转义双引号

Java Don';t在字符串中转义双引号,java,string,escaping,double-quotes,Java,String,Escaping,Double Quotes,我已经编写了一个命令行脚本,并且正在使用java进行测试 在命令行中,我是这样写的:script-html=“anchor bold”因此,在使用java代码测试相同的代码时,应该如何准确地勾勒出我的字符串 -html=anchor bold”它不起作用,因为没有包含双引号,所以我的测试失败 -html=\“锚定粗体\”这将转义双引号,但我想要它 -html=\\\\“锚定粗体\\”这将导致-html=\\“锚定粗体\”但我不想要任何斜杠 我正在使用字符串[]数组来执行命令 new String

我已经编写了一个命令行脚本,并且正在使用
java
进行测试

在命令行中,我是这样写的:
script-html=“anchor bold”
因此,在使用java代码测试相同的代码时,应该如何准确地勾勒出我的字符串

-html=anchor bold”
它不起作用,因为没有包含双引号,所以我的测试失败

-html=\“锚定粗体\”
这将转义双引号,但我想要它

-html=\\\\“锚定粗体\\”
这将导致
-html=\\“锚定粗体\”
但我不想要任何斜杠

我正在使用
字符串[]
数组来执行命令

new String[] { "--path=" + p,
               "--user=" + user,
               "--html=\"anchor bold\"",
               "--port=8081"
            }
命令行参数为:

path/executeScript --path=path1 --user=testUser --html="anchor bold" --port=8081

将转义字符放在任何要用作文字字符的字符前面,然后像往常一样在其周围加上双引号

script -html="\"anchor bold\""

将转义字符放在任何要用作文字字符的字符前面,然后像往常一样在其周围加上双引号

script -html="\"anchor bold\""

如果你想用Java测试你的脚本,参数中包含引号,你没有任何选择,你必须转义它

String[] command  = new String[] {
    "path/executeScript",
    "--path=" + p,
    "--user=" + user,
    "--html=\"anchor bold\"",
    "--port=8081"
}
Runtime.getRuntime().exec(command);

技术说明:

如果你想用Java测试你的脚本,使用包含引号的参数,你没有任何选择,你必须退出它

String[] command  = new String[] {
    "path/executeScript",
    "--path=" + p,
    "--user=" + user,
    "--html=\"anchor bold\"",
    "--port=8081"
}
Runtime.getRuntime().exec(command);

技术说明:

要声明字符串文字,唯一的方法是在字符串中的字符周围加双引号。如下所示:

"String Characters"
... String Characters
从:

字符串文字由零个或多个用双引号括起来的字符组成。字符可以用转义序列()表示—一个转义序列用于U+0000到U+FFFF范围内的字符,两个转义序列用于U+010000到U+10FFFF范围内的UTF-16字符代理代码单位。
StringLiteral:
“{
}”
字符串字符:
但不是“或”
有关转义序列的定义,请参见。

[…]

以下是字符串文字的示例:

""                    // the empty string
"\""                  // a string containing " alone
"This is a string"    // a string containing 16 characters
"This is a " +        // actually a string-valued constant expression,
    "two-line string"    // formed from two string literals
因为转义双引号是编译时的语法要求,必须在字符串文本中转义双引号

您可以尝试使用Unicode文字,但我非常怀疑(破坏者:它不会),编译器会接受它:

"--html=\u0022anchor bold\u0022"
— Wrong 使用转义:

"--html=\"anchor bold\""
— Right 其中,编译器将其视为:

... --html="anchor bold"
另请参见:


    • 要声明字符串文字,唯一的方法是在字符串中的字符周围加双引号。像这样:

      "String Characters"
      ... String Characters
      
      从:

      字符串文字由零个或多个用双引号括起来的字符组成。字符可以用转义序列()表示-一个转义序列用于U+0000到U+FFFF范围内的字符,两个转义序列用于U+010000到U+10FFFF范围内字符的UTF-16代理代码单元。
      StringLiteral:
      “{
      }”
      字符串字符:
      但不是“或”
      
      有关转义序列的定义,请参见。

      […]

      以下是字符串文字的示例:

      ""                    // the empty string
      "\""                  // a string containing " alone
      "This is a string"    // a string containing 16 characters
      "This is a " +        // actually a string-valued constant expression,
          "two-line string"    // formed from two string literals
      
      因为转义双引号是编译时的语法要求,必须在字符串文本中转义双引号

      您可以尝试使用Unicode文字,但我非常怀疑(破坏者:它不会),编译器会接受它:

      "--html=\u0022anchor bold\u0022"
      — Wrong 使用转义:

      "--html=\"anchor bold\""
      — Right 其中,编译器将其视为:

      ... --html="anchor bold"
      
      另请参见:


        • 我能想到的一种方法..使用字符

          "--html=" + '"' + "anchor bold" + '"'
          

          我能想到的一种方法..使用字符

          "--html=" + '"' + "anchor bold" + '"'
          


          请尝试:-html=''anchor bold',在双引号和单引号之间没有空格。我只是将其隔开,以便您可以知道发生了什么。我们可以了解更多详细信息吗?
          -html=“anchor bold”如何“
          在您的课堂上使用过吗?向我们显示您的脚本详细信息。@ToYonos添加了更多详细信息。请检查您在问题中的代码是否正确。我相信我们可以提供帮助,但我们需要知道:代码的更多上下文-您如何尝试运行脚本?使用Runtime.getRuntime().exec(yourCommandString)?第一个命令行是您希望在CommandString中使用的命令行吗?第二种方法是调用Java的方式吗?使用“-html=”锚定粗体\”的解决方案有什么问题?为什么这对您不起作用?请尝试:-html=“‘锚定粗体’”,双引号和单引号之间不带空格。我只是把它隔开,这样你就可以知道发生了什么。我们可以有更多的细节吗?
          -html=“anchor bold”
          在您的课堂上是如何使用的?向我们显示您的脚本详细信息。@ToYonos添加了更多详细信息。请检查您在问题中的代码是否正确。我相信我们可以提供帮助,但我们需要知道:代码的更多上下文-您如何尝试运行脚本?使用Runtime.getRuntime().exec(yourCommandString)?第一个命令行是您希望在CommandString中使用的命令行吗?第二种方法是调用Java的方式吗?使用“-html=”锚定粗体\”的解决方案有什么问题?为什么这对你不起作用?为什么我没有任何选择,必须避开双引号?Java就是这样工作的。这里有一个技术解释:好的,我理解技术解释,但在我的例子中,我如何测试这样的情况?我不明白,你想做什么?即使你的字符串被转义,你的命令行也可以被转义。为什么我没有任何选择,必须转义双引号?这就是Java的工作方式。这里有一个技术解释:好的,我理解技术解释,但在我的情况下,我如何测试这样的情况?我不明白,你想做什么?即使你的字符串被转义,你的命令行也可能会正常,不幸的是,
          String+char
          连接过程会隐式地将
          char
          向下转换为
          int
          。在本例中,
          变为
          22
          ,因此您将得到
          --html=22bold22