|在 java string.split() 方法中无法识别[重复]
Posted
技术标签:
【中文标题】|在 java string.split() 方法中无法识别[重复]【英文标题】:| not recognized in java string.split() method [duplicate] 【发布时间】:2014-04-02 15:55:00 【问题描述】:我在使用 java string.split 方法时遇到问题。
我有一个这样的字符串词,它等于-freshness|originality
。然后我像这样拆分这个字符串:
String words[] = word.split("|");
如果我然后输出单词[1],像这样:
t1.setText(words[1]);
它给了我价值 f。我发现这是freshness
这个词中的f。
如何正确拆分字符串以使 words[1] 实际上是 originality
?谢谢您的帮助!
【问题讨论】:
【参考方案1】:您需要转义字符。使用"\\|"
。
更多关于正则表达式转义字符here的信息。
【讨论】:
它给了我一个错误,说它是一个无效的转义序列 @James 是的,我忘了加倍反斜杠。现在应该好了。 对不起,它确实有效!【参考方案2】:你应该逃避它:
String words[] = word.split("\\|");
在此处查看类似问题的解释:Why does String.split need pipe delimiter to be escaped?
String 对象的split()
方法有一个正则表达式作为参数。这意味着未转义的 |
不会被解释为字符,而是被解释为 OR,意思是“空字符串或空字符串”。
【讨论】:
【参考方案3】:您需要转义管道,因为 java 将其识别为正则表达式 OR 运算符。
line.split("\\|")
"|"
gets 被解析为“空字符串或空字符串”,这不是您要查找的内容。
记录在案
... ? . + ^ : - $ *
都是正则表达式,需要转义。
【讨论】:
【参考方案4】: String test ="freshness|originality";
String[] splits = test.split("\\|");
String part1 = splits[0]; // freshness
String part2 = splits[1]; // originality
【讨论】:
以上是关于|在 java string.split() 方法中无法识别[重复]的主要内容,如果未能解决你的问题,请参考以下文章
[Java]_[初级]_[高效使用String.split的方法]
[Java]_[初级]_[高效使用String.split的方法]