繁体   English   中英

双引号转义Java

[英]Double Quote escape Java

这可能对您来说是一个基本问题。 但是我被困在这里。 我想用其等效的Unicode值( " with " )替换字符串的所有双引号。

在C#中是可能的。 但是不知道如何用Java做到这一点。

C# -C#工作片段

Java- Java非工作片段

注意:在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM