Java 中的字符串拆分给出了意想不到的结果

String Split in Java Giving Unexpected Results

我有一系列格式如下的字符串:“动物 || 类型 || 区域 ||”。

在 Java 中,我正在尝试拆分字符串,以便只显示第一部分。我在网上阅读的所有内容都说拆分字符串:

String animalString = "animal || type || area"
String animalArray[] = animalString.split("||")

System.out.println("result = " + Arrays.toString(animalArray));

但是,当我拆分字符串时,它不仅仅根据“||”进行拆分除法而是拆分每个字母:

result = [a, n, i, m, a, l,  , |, |,  , t, y, p, e,  , |, |,  , a, r, e, a,  , |, |]

当我在 split 方法中添加分隔符时,它分隔了字符串的第一部分,因此无效。

如何拆分具有上述格式的字符串,以便在数组中获取三个单词本身,而不仅仅是字母?

你需要对它们进行双重转义。一次用于 String,一次用于 regex\ 转义斜杠,因此它可以作为 \| 转义正则表达式 |.

\s*允许在||

前后有0个或多个空格
String animalString = "animal || type || area";
String animalArray[] = animalString.split("\s*\|\|\s*");

System.out.println("result = " + Arrays.toString(animalArray));

打印

result = [animal, type, area]