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