【发布时间】:2019-01-24 11:27:31
【问题描述】:
我想在字符串中的每 2 个字符之后连接或附加特殊字符作为冒号 :。
例如: 原始字符串如下:
String abc =AABBCCDDEEFF;
连接或附加冒号后如下:
String abc =AA:BB:CC:DD:EE:FF;
所以我的问题是我们如何在 android 中实现这一点。
提前致谢。
【问题讨论】:
标签: java android string kotlin stringbuilder
我想在字符串中的每 2 个字符之后连接或附加特殊字符作为冒号 :。
例如: 原始字符串如下:
String abc =AABBCCDDEEFF;
连接或附加冒号后如下:
String abc =AA:BB:CC:DD:EE:FF;
所以我的问题是我们如何在 android 中实现这一点。
提前致谢。
【问题讨论】:
标签: java android string kotlin stringbuilder
在 Kotlin 中,使用 chunked(2) 将 String 每 2 个字符拆分一次,然后使用 joinToString(":") 重新加入:
val str = "AABBCCDDEEFF"
val newstr = str.chunked(2).joinToString(":")
println(newstr)
将打印
AA:BB:CC:DD:EE:FF
【讨论】:
如果您不想使用 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(":");
}
这里
在最后一个条目中。希望这是有道理的。如果您发现任何问题,请告诉我。
【讨论】:
使用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();
【讨论】:
这是 Kotlin 的方式。没有StringBuilder
val newString: String = abc.toCharArray().mapIndexed { index, c ->
if (index % 2 == 1 && index < abc.length - 1) {
"$c:"
} else {
c
}
}.joinToString("")
【讨论】:
您可以结合String.split 和String.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
【讨论】: