如何在java中按\拆分字符串

如何在java中按\拆分字符串,java,Java,我在java中拆分字符串时遇到问题。它给出了java.util.regex.Pattern.error String name = One\Two\Three. String[] str = name.split("\\"); for(int i =0; i < str.length ; i++) System.out.println(str[i]); String name=1\2\3。 字符串[]str=name.split(\\”; 对于(int i=0;i

我在java中拆分字符串时遇到问题。它给出了
java.util.regex.Pattern.error

 String name = One\Two\Three.
 String[] str = name.split("\\");
 for(int i =0; i < str.length ; i++)
    System.out.println(str[i]);
String name=1\2\3。
字符串[]str=name.split(\\”;
对于(int i=0;i
我将另一个\作为转义字符,但不起作用


帮帮我。

One\Two\Three
不是有效的字符串文字(需要引号,并且需要转义反斜杠)

String name=“一\\二\\三”;
字符串[]str=name.split(“\\\”);
对于(int i=0;i

解释
String#split
需要一个正则表达式。反斜杠字符在正则表达式中有特殊含义,因此需要使用另一个反斜杠对其进行转义:
\\
现在,由于反斜杠字符在Java字符串文本中也有特殊含义,因此必须再次将每个反斜杠字符加倍,从而导致缺少引号

String name = "One\\Two\\Three".

你需要逃避两次:

 String name = "One\\Two\\Three."
 String[] str = name.split("\\\\");
 for(int i =0; i < str.length ; i++)
    System.out.println(str[i]);
String name=“一\\二\\三。”
字符串[]str=name.split(“\\\”);
对于(int i=0;i
如果要测试模式,应使用以下工具:


您不能在那里编写测试字符串和测试模式,它可以调用matches()、lookingAt()、find()和reset()方法。它还将您的模式转换为Java代码(避开反斜杠等)。

您是否尝试过使用char值92或UTF-8进行拆分?在Unicode中,它是在U+005C\反向solidus处编码的。为什么您的正则表达式有4个反斜杠而不是2?\\是一个转义序列,用于表示\例如,在我的应用程序的一侧有一个“In a string you need to put\”字符串。当我在调试模式下显示字符串时,它显示为“一\\二\\三”。是否有其他方式?@Dipesh:
“一\\二\\三”。
是该字符串的正确表示形式。不,没有其他方法,你只需要接受一个事实,反斜杠在字符串文本中有特殊的含义。它们被用作转义字符,因此如果不这样使用它们,则需要正确转义。感谢Niklas B,我知道,我接受我必须使用反斜杠来删除特殊含义,并且它在我使用4反斜杠作为名称时起作用。拆分(“\\\”;它是有效的
 String name = "One\\Two\\Three."
 String[] str = name.split("\\\\");
 for(int i =0; i < str.length ; i++)
    System.out.println(str[i]);