|在 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的方法]

Java中split的用法

分享一个 Java String split 快速分割的方法

Java String.split()

我爱java系列---String.Split方法