Java官方文档说明:

例如,字符串"boo:and:foo"使用这些表达式生成以下结果

{ "boo", "and", "foo" }"

这就是我需要的工作方式.但是,如果我运行这个:

public static void main(String[] args){
        String test = "A|B|C||D";

        String[] result = test.split("|");

        for(String s : result){
            System.out.println(">"+s+"<");
        }
    }

它打印:

><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<

这与我的预期相go 甚远:

>A<
>B<
>C<
><
>D<

为什么会这样?

推荐答案

你需要

test.split("\\|");

split uses regular expression and in regex | is a metacharacter representing the OR operator. 你需要 to escape that character using \ (written in String as "\\" since \ is also a metacharacter in String literals and require another \ to escape it).

你也可以使用

test.split(Pattern.quote("|"));

并让Pattern.quote创建表示|的正则表达式的转义版本.

Java相关问答推荐

Java小程序未在MacOS上运行

CSS应用于一个端点,但不应用于Thymeleaf中的另一个端点

Spring Boot@Cachebale批注未按预期工作

连接Quarkus中的两个异步操作

R.id.main给我一个红色错误,无法解析MainActivity.java中的符号main

不推荐使用的Environment.getExternalStorageDirectory().getAbsolutePath()返回的值不同于新的getExternalFilesDir(空)?

使用传递的参数构造异常的Mockito-doThrow(或thenThrow)

使用GridBagLayout正确渲染

在Java中如何从Executors.newFixedThreadPool(MAX_THREAD_COUNT())迁移到虚拟线程

为什么Java编译器不区分不同类型的方法?

Com.google.firebase.database.DatabaseException:无法将类型为java.lang.Boolean的值转换为字符串.这是关于什么的?

更新AWS凭据

测试容器无法加载类路径初始化脚本

无法将GSON导入到我的JavaFX Maven项目

使用SWIG将C++自定义单元类型转换为基本Java类型

Maven-Dependency-Plugin 3.6.+开始查找在依赖关系:分析目标期间找到的新的使用的未声明依赖关系

Java System.getProperty在哪里检索user.home?

读取ConcurrentHashMap中的可变对象

ControlsFX RangeSlider在方向垂直时滞后

Springboot应用程序无法识别任何@RestController或@Service,我认为@Repository也无法识别