我想用破折号输入一个字符串。破折号内有几组字符。该字符数由整数K指定。我将破折号开始,所以我有一个干净的String,然后使用
replaceAll("(.{" + K + "})", "$0-")
要插入一个-每K个字符。我想要“溢出”(将所有先前字符分组后的剩余字符都放在字符串的开头而不是结尾)。
例如,我有一个包含8个字符的字符串:
String s = "1-23456-78";
String newS = s.replace("-", "");
新闻现在是12345678
int K = 3;
String newNewS = newS.replaceAll("(.{" + K + "})", "$0-").trim();
newNewS是123-456-78
我希望它是12-345-678。无论如何要反转replaceAll方法,还是有另一种方法?
答案 0 :(得分:4)
我能想到的一种简单方法是,您反转字符串,然后应用正则表达式,然后再次反转?检查此代码。
public static void main(String args[]) {
String s = "1-23456-78";
String newS = s.replace("-", "");
System.out.println(newS);
int K = 3;
newS = new StringBuilder(newS).reverse().toString();
String newNewS = newS.replaceAll("(.{" + K + "})", "$0-").trim();
System.out.println(new StringBuilder(newNewS).reverse().toString());
}
让我知道这听起来是否很好。
答案 1 :(得分:2)
您可以先行(demo):
.{3}(?=(?:.{3})*$)
替换为:
-$0
在您的情况下:
"12345678".replaceAll(".{" + K + "}(?=(?:.{" + K + "})*$)", "-$0")