[英]Double Quote escape Java
如另一个问题所述 :
问题在于,Unicode替换是在编译的早期完成的。 Unicode转义不仅在字符串和字符文字中有效(与其他转义序列,例如\\ t一样),它们在代码中的任何地方均有效。 乔恩·斯基特
因此, """
实际上等效于"""
,这在Java中在语法上是错误的。
这将起作用:
System.out.println(xyz.replaceAll("\"", ""+'\u0022'));
如果仅替换字符,则:
System.out.println(xyz.replace('\"', '\u0022'));
但是, "
只是"
字符的另一种形式。如果您经过一般的解决方案,大多数字符首先都不会给您带来此问题,因为它们不会像"
那样困扰着字符串文字。
我们无法使用单个Unicode转义来表示相同的字符串。 “”与Java中的“ \\ u0022”相同,您可以通过这种方式进行
public static void main(String args[])
{
System.out.println("Hello, World!");
String xyz = "Hello \"World";
System.out.println(xyz.replaceAll("\"", "\u005c\u0022"));
}
你去:
public static void main(String args[]){
String yourJsonString = "Test\"TEST";
yourJsonString = yourJsonString.replaceAll("\"", "\\\\u0022");
System.err.println(yourJsonString);
}
将打印Test"TEST
尝试这个:
import java.util.*; import java.lang.*;
class Rextester {
public static void main(String args[])
{
System.out.println("Hello, World!");
String xyz = "Hello \"World";
System.out.println(xyz.replaceAll("\"", Character.toString((char)0x0022)));
} }
您也可以这样做-
String s = "Hello \"world";
System.out.println(s.replace('\"', (char) (0x22)));
重要的是,将char的值表示为十六进制值,方法是在其前面添加0x
。
否一个Java源文本"
和"
不仅是一样的,它们是相同的,与读取"
被替换为对应的字符"
。
您可以这样写:
public \u0063lass C {
如果要使用相同的u换码形式编写JSON文本:
s = s.replace("\"", "\\u0022");
但是,很可能有些JSON阅读器也可能将其识别为"
。因此,也许:
s = s.replace("\"", "\\\"");
可能会更成功。
一种执行此操作的方法:
public class MainTester {
public static void main(String args[])
{
System.out.println("Hello, World!");
String xyz = "Hello \"World";
System.out.println(xyz.replaceAll("\"", "\u005c\u0022"));
}
}
输出:
Hello "World
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.