Java 将字符串格式化为特定格式

Java 将字符串格式化为特定格式,java,string,Java,String,目前我有一个9字符串的数字 String s = 123456789 如何将此字符串转换为这种格式 String newS = 12 - 34 - 5678 - 9 我希望这对你有帮助 public static String formatString(String str) { return str.substring(0, 1) + " - " + str.substring(2, 3) + " - " + str.substring(4, 7) + " - " + str.su

目前我有一个9字符串的数字

String s = 123456789
如何将此字符串转换为这种格式

String newS = 12 - 34 - 5678 - 9

我希望这对你有帮助

public static String formatString(String str) {
    return str.substring(0, 1) + " - " + str.substring(2, 3) + " - " + str.substring(4, 7) + " - " + str.substring(8);
}

使用Java8 streams,您可以获得更干净的版本

String s = "123456789";

AtomicInteger pos = new AtomicInteger();
String newS = IntStream.of(2, 2, 4, 1)
      .mapToObj(n -> s.substring(pos.getAndAdd(n), pos.get()))
      .collect(Collectors.joining(" - "));

可以使用正则表达式:

    String s = "123456789";
    Pattern pattern = Pattern.compile("(\\d{2})(\\d{2})(\\d{4})(\\d)");
    Matcher matcher = pattern.matcher(s);
    String formatted = matcher.find() ?
            matcher.group(1) + " - " + matcher.group(2) + " - " + matcher.group(3) + " - " + matcher.group(4) :
            "";
    System.out.println(formatted); // 12 - 34 - 5678 - 9

您想使用哪种算法?您希望输出格式是什么?2-2-4-1个字符?您是否只考虑大小为9的字符串?否则请说明这些字符串的显示格式。注意IntStream.of(2,2,4,1)--和join(“-”)。。。无需额外努力即可轻松定制。。。