在每隔N个字符的Android字符串中添加分隔符?

时间:2019-08-01 15:22:52

标签: java android

我想在3个字符后加一个冒号。所以我想打印“ 123:456:789:0”。我怎样才能做到这一点。现在它的输出方式是:“ 123:4567890”

String s = "1234567890";
System.out.println(java.util.Arrays.toString(s.split("(?<=\\G.{3})")));

3 个答案:

答案 0 :(得分:1)

您好尝试下面的正则表达式,

String s = "1234567890";
s = s.replaceAll("(.{3})", "$1:");
System.out.println(s);

更新: 更新了答案,如果您不想在末尾插入“:”,

String s = "123456789";
s = s.replaceAll("...(?!$)", "$0:");
System.out.println(s);

“ ...”是长度。您可以根据需要更改。因此,如果您希望像这样将84:F3:EB:34:75:6B作为84F3EB34756B的输出,请使用

s = s.replaceAll("..(?!$)", "$0:");

答案 1 :(得分:0)

这是一种蛮力的处事方法,可能效率很低。它将起作用

class Main {
  public static void main(String[] args) {
    String s = "123456789";
    String result="";
    for(int i=1; i < s.length()+1; i++)
    {
      result += s.charAt(i-1);
      if(i%3 == 0 && i!=s.length())
      {
        result+=":";
      }
    }
    System.out.println(result);
  }
}

答案 2 :(得分:0)

没有正则表达式的解决方案。

fun String.putDots(step: Int = 3, divider: String = ":"): String {
        if (isEmpty() || length <= step) {
            return this
        }

        val builder = StringBuilder()

        var startIndex = 0

        for (i in step..lastIndex step step) {
            builder.append(substring(startIndex, i))

            builder.append(divider)

            startIndex = i
        }

        builder.append(substring(startIndex, length))

        return builder.toString()
    }