String Manipulation每隔4个字符插入一个字符

时间:2010-11-12 22:37:22

标签: java android string concatenation android-edittext

在Android中如果我有一个编辑文本并且用户输入了123456789012,我怎么能让程序每隔4个字符插入一个破折号。 即:1234-5678-9012

我想你需要说出以下几点: - a=Characters 1~4, b=Characters 5~8, c=Characters 9-12,结果 = a +“ - ”+ b +“ - ”+ c 。但我不确定Android的外观如何。

非常感谢您的帮助。

3 个答案:

答案 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.

substring() Reference

答案 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的倍数的字符串,你必须写一个额外的位来处理它,以防止索引超出界限。