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用“^|^”分割字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章