Java用“^|^”分割字符串[重复]

Posted

技术标签:

【中文标题】Java用“^|^”分割字符串[重复]【英文标题】:Java split string by "^|^" [duplicate] 【发布时间】:2016-02-14 16:26:15 【问题描述】:

我有以下示例数据:

***^|^100^|^101^|^102^|^103^|^104^|^

我希望用 "^|^" 分割,所以结果是:

***
100
101
102
103
104

以下是我的示例代码,但未能获得预期的结果,我误解了拆分模式吗?

String a = "***^|^100^|^101^|^102^|^103^|^104^|^105^|^106^|^107^|^108^|^";
String [] split ;

split = a.split("^|^");
for(int i=0; i<split.length; i++)

        System.out.println(split[i]);

【问题讨论】:

split = a.split("\\^\\|\\^"); 使用这个 ***.com/questions/21524642/… 【参考方案1】:

^| 都是您需要转义的特殊聊天者。

split = a.split("\\^\\|\\^");

【讨论】:

【参考方案2】:

使用Pattern.quote() 将所有元字符视为字符串文字/文字模式。 ^ , | 在正则表达式中有特殊含义。

这应该可行:

public static void main(String[] args) throws Exception 
    String s = "***^|^100^|^101^|^102^|^103^|^104^|^";
    String pattern = Pattern.quote("^|^");
    System.out.println(Arrays.toString(s.split(pattern)));


O/P:

[***, 100, 101, 102, 103, 104]

【讨论】:

我不知道 Pattern。谢谢看起来棒极了。 这看起来比通常的反斜杠***要好得多。不过,我希望有一个 split 方法可以使用分隔符字符串,而不是正则表达式。 如果您在多个地方使用相同的模式,您可以声明一次以供所有人使用public static final Pattern HAT_PIPE_HAT = Pattern.quote("^|^") @Thilo - Pattern.quote() 返回String。但是,是的,你是对的,创建模式的成本很高:) 我更多地考虑了可读性。我觉得没那么贵。但是可以更进一步,执行static final Pattern HAT_PIPE_HAT = Pattern.compile(Pattern.quote("^|^")),得到HAT_PIPE_HAT.split(theString)【参考方案3】:

请检查一下

String str = "***^|^100^|^101^|^102^|^103^|^104^|^";
String arr[] = str.split("\\^\\|\\^");
System.out.println(arr.length);

【讨论】:

这个答案与 Uma 有什么不同?

以上是关于Java用“^|^”分割字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python:用'和 - [重复]分割字符串

用换行符分割字符串[重复]

在Java [重复]中的多个空格上分割字符串

用 "\\" 和 "." 分割字符串使用正则表达式 [重复]

急求!!!!用java 写一个 字符串去重 的程序!

java split进行字符串分割