Java String split(“|”)方法调用无法正常工作[重复]
Posted
技术标签:
【中文标题】Java String split(“|”)方法调用无法正常工作[重复]【英文标题】:Java String split("|" ) method call not working correctly [duplicate] 【发布时间】:2014-09-06 16:31:15 【问题描述】:public class SplitStr
public static void main(String []args)
String str1 = "This | is | My | Account | For | Java|";
String str2 = "This / is / My / Account / For / Java/";
// String[] arr = str.split("|");
for(String item : str1.split("|"))
System.out.print(item);
程序可以正确使用字符串 str2,但不能使用字符串 str1 该程序中可能的流程是什么?
【问题讨论】:
不工作是什么意思?请在这两种情况下显示输出。 你在 str 上调用它,而不是在 str1 上。就个人而言,我很惊讶这个编译。 【参考方案1】:String#split()
需要正则表达式作为第一个参数,|
是正则表达式中的控制字符。
要让正则表达式解析器理解您的意思是按文字|
进行拆分,您需要将\|
传递给正则表达式解析器。但是\
是Java 字符串文字中的控制字符。所以,为了让 Java 编译器明白你想将\|
传递给正则表达式解析器,你需要将"\\|"
传递给String#split()
方法。
【讨论】:
很好的解释和深入的细节。 +1【参考方案2】:使用
str1.split("\\|")
而不是
str1.split("|")
你需要转义|
【讨论】:
【参考方案3】:split
需要一个正则表达式,因为|
是正则表达式中的一个特殊字符,所以你必须对其进行转义。试试str.split("\\|")
。示例:
>>> Arrays.asList("This | is | My | Account | For | Java|".split("\\|"));
[This , is , My , Account , For , Java]
【讨论】:
以上是关于Java String split(“|”)方法调用无法正常工作[重复]的主要内容,如果未能解决你的问题,请参考以下文章
[Java]_[初级]_[高效使用String.split的方法]
[Java]_[初级]_[高效使用String.split的方法]