【问题标题】:| not recognized in java string.split() method [duplicate]|在 java string.split() 方法中无法识别[重复]
【发布时间】: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?谢谢您的帮助!

【问题讨论】:

    标签: java string


    【解决方案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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-14
          相关资源
          最近更新 更多