java - Java 中以 *** 分隔符分割字符串

标签 java string spring

public class TestStringSplit {
    public static void main(String[] args) {

        String bal = "IND|TEST|***|Cricket|***";
        String[] patterns = org.springframework.util.StringUtils.split(bal,
                "***");
        System.out.println("SPRING Framework String Split");
        for (String pt : patterns) {
            System.out.println("Pattern " + pt);
        }

        System.out.println("************************");

        patterns = org.apache.commons.lang.StringUtils.split(bal,
                "***");
        System.out.println("Apache Commons Lang String Split");
        for (String pt : patterns) {
            System.out.println("Pattern " + pt);
        }

        System.out.println("************************");

        patterns = bal.split("***");
        System.out.println("JDK String Split");
        for (String pt : patterns) {
            System.out.println("Pattern " + pt);
        }

    }
}

以上结果为

SPRING框架字符串分割

Pattern IND|TEST|

Pattern |Cricket|***
<小时/>

Apache Commons Lang 字符串拆分

Pattern IND|TEST|

Pattern |Cricket|
<小时/>
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
***
^

为什么默认的 JDK 没有给我所需的结果,而是给我异常......以及获取值的模式应该是什么

问候

最佳答案

您需要转义“*”,因为它是正则表达式中的特殊字符:

patterns = bal.split("\\*\\*\\*");

关于java - Java 中以 *** 分隔符分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917358/

相关文章:

java - 无法解析带下划线的字段

c - 垃圾附加在输出字符串 C 之后的末尾

javascript - 使用多个定界符和 Concat 拆分字符串

string - 将两个不同列上第 n 次出现的 'foo' 和 'bar' 替换为相应列中所提供文件的第 n 行的数字

java - 使用 Spring JPA 规范按子查询排序

java - Hibernate HQL 问题期望找到 IDENT "*"

java - 使用 Matisse GUI 构建器设置最大宽度

java - 是否有一个类似于 Ivy 的动态 java 类级解析器?

spring - 将 Spring Boot 应用程序升级到最新版本

java - 如何在 Spring 中 Autowiring 业务对象