【问题标题】:How to concatenate Special symbol as colon after every 2 character in Android如何在Android中每2个字符后将特殊符号连接为冒号
【发布时间】:2019-01-24 11:27:31
【问题描述】:

我想在字符串中的每 2 个字符之后连接或附加特殊字符作为冒号 :

例如: 原始字符串如下:

String abc =AABBCCDDEEFF;

连接或附加冒号后如下:

  String abc =AA:BB:CC:DD:EE:FF;

所以我的问题是我们如何在 android 中实现这一点。

提前致谢。

【问题讨论】:

    标签: java android string kotlin stringbuilder


    【解决方案1】:

    在 Kotlin 中,使用 chunked(2)String 每 2 个字符拆分一次,然后使用 joinToString(":") 重新加入:

    val str = "AABBCCDDEEFF"
    val newstr = str.chunked(2).joinToString(":")
    println(newstr)
    

    将打印

    AA:BB:CC:DD:EE:FF
    

    【讨论】:

      【解决方案2】:

      如果您不想使用 Math 类函数,可以尝试以下代码。

      StringBuilder stringBuilder = new StringBuilder();
          for (int a =0; a < abc.length(); a++) {
              stringBuilder.append(abc.charAt(a));
              if (a % 2 == 1 && a < abc.length() -1)
                  stringBuilder.append(":");
          }
      

      这里

      1. a % 2 == 1 ** ==> 此条件语句用于附加 **":"
      2. a ==> 这个条件语句用来不加":"

      在最后一个条目中。希望这是有道理的。如果您发现任何问题,请告诉我。

      【讨论】:

        【解决方案3】:

        使用StringBuilder

        StringBuilder sb = new StringBuilder(abc.length() * 3 / 2);
        String delim = "";
        for (int i = 0; i < abc.length(); i += 2) {
          sb.append(delim);
          sb.append(abc, i, Math.min(i + 2, abc.length()));
          delim = ":";
        }
        String newAbc = sb.toString();
        

        【讨论】:

          【解决方案4】:

          这是 Kotlin 的方式。没有StringBuilder

          val newString: String = abc.toCharArray().mapIndexed { index, c ->
                      if (index % 2 == 1 && index < abc.length - 1) {
                          "$c:"
                      } else {
                          c
                      }
                  }.joinToString("")
          

          【讨论】:

            【解决方案5】:

            您可以结合String.splitString.join(Android 为TextUtils.join(":", someList))首先在每个第二个字符处拆分字符串,然后使用您想要的分隔符将其连接起来。示例:

            String abc = "AABBCCDDEEFF";
            String def = String.join(":", abc.split("(?<=\\G.{2})"));
            System.out.println(def);
            //AA:BB:CC:DD:EE:FF
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-12-19
              • 2019-09-13
              • 2023-01-03
              • 1970-01-01
              • 2016-01-04
              • 2015-12-03
              • 2019-08-31
              相关资源
              最近更新 更多