我在操纵ssn。 输入=“123456789” 输出= “896745123”
您从输入端获取前3位数字(即123)并将其与最后两位数字“89”交换,然后将“45”与“67”交换。下面是我使用toCharArray的代码。但我不喜欢它。许多用户一次可以访问此方法(不是测试)。我一直在寻找更好的性能,可读性和贸易安全解决方案。
感谢您的帮助。
@Test
public void testSSNString(){
String original="123456789";
String result="896745123";
char[] charResult=original.toCharArray();
char temp=charResult[6];
charResult[6]=charResult[0];
charResult[0]=charResult[7];
charResult[7]=charResult[1];
charResult[1]=charResult[8];
charResult[8]=charResult[2];
charResult[2]=charResult[5];
charResult[5]=charResult[4];
charResult[4]=charResult[3];
charResult[3]=temp;
assertEquals(original.toCharArray(),charResult);
}
答案 0 :(得分:1)
在性能方面,您给出的方式基本上是您在Java中可以做的最好的方式。使用数组比使用StringBuilder
更快。
为了提高可读性,我只做了一些小改动,比如为置换输出创建一个新数组:
@Test
public void testSSNString() {
String original = "123456789";
String expected = "896745123";
char[] in = original.toCharArray();
char[] out = new char[9];
out[0] = in[7];
out[1] = in[8];
out[2] = in[5];
out[3] = in[6];
out[4] = in[3];
out[5] = in[4];
out[6] = in[0];
out[7] = in[1];
out[8] = in[2];
assertEquals(expected.toCharArray(), out);
}