【发布时间】:2018-10-03 19:03:46
【问题描述】:
例如我有字符串:61109010140000071219812874,我想应用算法,它将通过以下方式转换字符串:
611 09-010-14-000-00-712-19-812-87-4
如您所见,重点是选择字符串的前三个字母,然后添加一个空格,然后在两个字符后添加两个破折号,然后是三个,然后是两个字符。就像是:
### ##-###-##-###-##-###-##-###
只有我希望我的算法是通用的。例如,对于字符串6110901,输出为:611 09-01,对于字符串61109010,输出为:611 09-010
我尝试使用 StringBuilder 和 addCharAt 方法,但不幸的是它覆盖了我的字符串。
【问题讨论】:
-
如果您发布您尝试过的实际代码,有人可能会指出其中的错误。如果您不发布,我们就不太可能发布。
-
str.replaceAll("(...)(..)(...)(..)(...)(..)(...)(..)(...)(..)(.)", "$1 $2-$3-$4-$5-$6-$7-$8-$9-$10-$11") -
或更严格地说:
str = str.replaceAll("^(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d)$", "$1 $2-$3-$4-$5-$6-$7-$8-$9-$10-$11");--- 见DEMO