首页 > 解决方案 > 在 Java 中使用正则表达式进行拆分

问题描述

我在Java中有String IR800610000000700805312546,我需要转换为

IR80-0610-0000-0070-0805-3125-46

我对字符串使用拆分,但不起作用

String[] arrayList = number.split("(\\w{4})");
StringBuilder result = new StringBuilder();
for (int i = 0; i < arrayList.length; i++) {
        result.append(arrayList[i]);
        if (i != arrayList.length - 1) {
            result.append(separator);
        }
}

我可以使用字符串格式化程序吗?

标签: javaandroidregexformatting

解决方案


您可以使用 replaceall 而不是 split 并使用您的捕获组,然后使用负前瞻来断言不是字符串的结尾(\w{4})(?!\$)

在替换中使用捕获组,后跟连字符$1-

String number = "IR800610000000700805312546";
number = number.replaceAll("(\w{4})(?!$)", "$1-");
System.out.println(number); // IR80-0610-0000-0070-0805-3125-46

Java 演示| 正则表达式演示


推荐阅读