首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中使用正则表达式进行拆分

在Java中使用正则表达式进行拆分
EN

Stack Overflow用户
提问于 2019-04-05 06:01:46
回答 2查看 51关注 0票数 0

我有字符串IR800610000000700805312546在Java中,我需要转换为

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

我使用split作为字符串,但不使用work

代码语言:javascript
复制
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);
        }
}

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

EN

回答 2

Stack Overflow用户

发布于 2019-04-05 06:13:55

您可以使用replaceall而不是split,并使用捕获组,后跟一个否定的先行检查来断言字符串(\w{4})(?!\$)的末尾。

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

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

Java demo | regex demo

票数 2
EN

Stack Overflow用户

发布于 2019-04-05 06:05:18

最简单的方法就是直接使用StringBuilder,而不用显式拆分:

代码语言:javascript
复制
StringBuilder result = new StringBuilder();
String delim = "";
for (int i = 0; i < number.length(); i += 4) {
  result.append(delim);
  delim = "-";

  result.append(number, i, min(i + 4, number.length()));
}

这种方法可能比使用正则表达式快至少一个数量级,因为它所做的工作要少得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55525556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档