【问题标题】:Can't split text that contain "|" in String [duplicate]无法拆分包含“|”的文本在字符串中[重复]
【发布时间】:2015-12-28 06:32:39
【问题描述】:

我想知道为什么我不能在字符串中拆分包含 | 作为分隔符的文本。当我使用逗号等时,拆分工作正常..

这是一个 SSCE

package tests;

public class Tests {        
    public static void main(String[] args) {

        String text1="one|two|three|four|five";
        String text2="one,two,three,four,five";

        String [] splittedText1 = text1.split("|");
        String [] splittedText2 = text2.split(",");

        for(String elem : splittedText1) System.out.println("text1="+elem);
        for(String elem : splittedText2) System.out.println("text2="+elem);
    }    
}

任何想法为什么它不能与“|”一起使用??

【问题讨论】:

  • 如果你想打动你的朋友,请使用Pattern#quote:String [] splittedText1 = text1.split(Pattern.quote("|"));
  • @MarounMaroun 我给你留下了深刻的印象:D
  • @sᴜʀᴇsʜᴀᴛᴛᴀ 一如既往
  • 非常令人印象深刻:-)。谢谢!

标签: java string split


【解决方案1】:

由于split(String regex) 采用regex 和|是元字符,你需要转义它。

String[] splittedText1 = splittedText1.split("\\|");

或者你可以简单地使用Pattern

正则表达式的编译表示。

String[] splittedText1 = splittedText1.split(Pattern.quote("|"));

【讨论】:

    【解决方案2】:

    因为拆分模式实际上是一个正则表达式。您需要转义|,因为它在正则表达式的上下文中具有特殊含义(它标志着替代):

    String [] splittedText1 = text1.split("\\|");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2018-10-10
      相关资源
      最近更新 更多