我想输入一个带破折号的字符串。破折号内有字符组。该字符数由整数 K 指定。我先去掉破折号,这样我就有了一个干净的字符串,然后我正在使用
replaceAll("(.{" + K + "})", "$0-")
每K个字符插入一个-。我想要“溢出”(将所有先前字符分组后剩下的字符放在字符串的前面而不是末尾)。
例如我有一个包含 8 个字符的字符串:
String s = "1-23456-78";
String newS = s.replace("-", "");
newS 现在是 12345678
int K = 3;
String newNewS = newS.replaceAll("(.{" + K + "})", "$0-").trim();
newNewS 是 123-456-78
我希望它是 12-345-678。无论如何要反转 replaceAll 方法还是有其他方法可以做到这一点?
最佳答案
我能想到的一个简单方法是,反转字符串,然后应用正则表达式,然后再次反转?检查此代码。
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());
}
如果这听起来不错,请告诉我。
关于Java' String replaceAll 替换字符串前面的溢出,而不是结尾。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53088537/