Java' String replaceAll 替换字符串前面的溢出,而不是结尾。

标签 java

我想输入一个带破折号的字符串。破折号内有字符组。该字符数由整数 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/

相关文章:

java - 我们是否允许在实例化期间使用通配符

java - 本地类型推断是否不需要某些导入语句?

java - JavaFX究竟如何启动

java - 在 Selenium 的表中找不到图像

java - 在 BlackBerry 中获取 NumberFormat 异常

java - Java中的单引号替换

java - 尝试播放声音文件

java - 具有分布式值的自定义哈希表

java - 授予 Java Applet 写入系统的权限

Java比较int数组,过滤并插入或更新到数据库