我有字符串IR800610000000700805312546在Java中,我需要转换为
IR80-0610-0000-0070-0805-3125-46.
我使用split作为字符串,但不使用work
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);
}
}
我可以使用字符串格式化程序吗?
发布于 2019-04-05 06:13:55
您可以使用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
发布于 2019-04-05 06:05:18
最简单的方法就是直接使用StringBuilder
,而不用显式拆分:
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()));
}
这种方法可能比使用正则表达式快至少一个数量级,因为它所做的工作要少得多。
https://stackoverflow.com/questions/55525556
复制相似问题