很早以前写过一篇《将数转化成西方数的表示形式》。今天偶尔翻到,发现那个效率实在太低,重写了一个简单的实现方式。
import java.util.Arrays;
public class TestEx {
public static void main(String[] args) {
for (int i = 1; i < 21; i++) {
char[] c = new char[i];
Arrays.fill(c, '1');
String tmpStr = new String(c);
System.out.println(tmpStr + ": " + translate(tmpStr));
}
}
public static String translate(String testStr) {
int len = testStr.length();
if (len < 4) {
return testStr;
}
int prefix = len % 3;
int commaNum = 0;
if (0 == prefix) {
prefix = 3;
commaNum = len / 3 - 1;
} else {
commaNum = len / 3;
}
StringBuilder newStr = new StringBuilder(len + commaNum);
newStr.append(testStr.substring(0, prefix));
for (int i = 0; i < commaNum; i++) {
int s = prefix + i * 3;
newStr.append(",").append(testStr.substring(s, s + 3));
}
return newStr.toString();
}
}