java - 拆分字符串方法的奇怪行为

标签 java string split

<分区>

考虑这些简单的代码行:

public class Main {

    public static void main(String[] args) {

        String string = "Lorem,ipsum,dolor,sit,amet";
        String[] strings = string.split(",");

        for (String s : strings) {
            System.out.println(s);
        }
    }
}

正如预期的那样,输出如下:

Lorem
ipsum
dolor
sit
amet

现在考虑前面代码的变体,其中我只是将 , 转换为 |:

public class Main {

    public static void main(String[] args) {

        String string = "Lorem|ipsum|dolor|sit|amet";
        String[] strings = string.split("|");

        for (String s : strings) {
            System.out.println(s);
        }
    }
}

我期待完全相同的输出,但奇怪的是:

L
o
r
e
m
|
i
p
s
u
m
|
d
o
l
o
r
|
s
i
t
|
a
m
e
t

怎么了?

最佳答案

String#split()方法接受正则表达式,| 在正则表达式中有特殊含义。

要查看预期结果,请转义 |

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

或者您可以使用 Pattern类(class),避免一切困惑。

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

关于java - 拆分字符串方法的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415238/

相关文章:

java - Stream Collector.toMap 调用 toString 而不是值

java - 为什么 substring() 函数应该返回溢出消息却返回值

Python 将全名拆分为两个变量,姓氏可能包含多个单词

javascript - 如何拆分字符串,转换为数字和求和

java - 如何使用递归算法确定数组是否包含两个总和为给定整数的元素?

java - 多个自定义 JComponents,只显示一个

string - 如何在 Rust 中匹配字符串和字符串?

python - 将数字字符串转换为数字列表

r - 如何按因子对数据框进行子集化并为每个子集重复绘图?

java - GWT CellTable - 从标题中删除排序箭头