在Android中如果我有一个编辑文本并且用户输入了123456789012,我怎么能让程序每隔4个字符插入一个破折号。 即:1234-5678-9012 ?
我想你需要说出以下几点: -
a=Characters 1~4, b=Characters 5~8, c=Characters 9-12
,结果 = a +“ - ”+ b +“ - ”+ c 。但我不确定Android的外观如何。
非常感谢您的帮助。
答案 0 :(得分:6)
String s = "123456789012";
String s1 = s.substring(0, 4);
String s2 = s.substring(4, 8);
String s3 = s.substring(8, 12);
String dashedString = s1 + "-" + s2 + "-" + s3;
//String.format is extremely slow. Just concatenate them, as above.
答案 1 :(得分:4)
或者使用StringBuilder的另一种替代方法,而不是将字符串拆分为多个部分然后加入它们:
String original = "123456789012";
int interval = 4;
char separator = '-';
StringBuilder sb = new StringBuilder(original);
for(int i = 0; i < original.length() / interval; i++) {
sb.insert(((i + 1) * interval) + i, separator);
}
String withDashes = sb.toString();
答案 2 :(得分:1)
替代方式:
String original = "123456789012";
int dashInterval = 4;
String withDashes = original.substring(0, dashInterval);
for (int i = dashInterval; i < original.length(); i += dashInterval) {
withDashes += "-" + original.substring(i, i + dashInterval);
}
return withDashes;
如果你需要传递长度不是dashInterval的倍数的字符串,你必须写一个额外的位来处理它,以防止索引超出界限。