【问题标题】:Java split string by "^|^" [duplicate]Java用“^|^”分割字符串[重复]
【发布时间】: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]);
}

【问题讨论】:

标签: java regex


【解决方案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 有什么不同?
    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 2015-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多