用Java交换字符串中的部分文本

时间:2015-06-02 18:32:57

标签: java string swap

我目前有一个字符串,我希望将每4个字符换成另一组四个字符。 EG

输入:1001 1101 0001 1001

输出:1101 1001 1001 0001

我真的不知道如何实际交换角色。我会逐个字符地做,还是有一些方法可以一次交换多个。非常感谢! :)

5 个答案:

答案 0 :(得分:1)

我认为String.replace()方法是合适的。

答案 1 :(得分:0)

Java中的字符串是不可变的,这意味着您无法更改它们。如果您想进行这样的修改,请改用StringBuilder。它有获取和替换子串的方法(在你的情况下是一个4个字符的子串)。

API:http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html

答案 2 :(得分:0)

我会在空格上拆分字符串,这会产生一个字符串数组。

从那里你可以循环遍历每个字符串并将其替换为您想要的结果。完成后,您可以使用StringBuilder

将其构建回字符串

答案 3 :(得分:0)

String input = "1001 1101 0001 1001";
//make array of strings in order to swap them, space being the common trait
String[] array = input.split("\\s");
//then swap array elements
for(int i = 0;i<array.length-1;i+=2){
   String tmp = array[i];
   array[i]= array[i+1];
   array[i+1] = tmp;
}
//build the output
String output = "";
for(int i = 0;i<array.length;i++){
   if(i<array.length-1)
       output+= array[i] + " ";
   else
       output+= array[i];
}

答案 4 :(得分:0)

StringBuilder.replace() String.replace()更合适,因为它不会复制整个字符串。

如果你知道字符串的大小是不变的,那么char []可能效果更好。如果您总是替换字符的修复计数,则 replace()调用会不必要地转移字符。

如果您想考虑第三方库(以防他们帮助满足其他要求),Apache Commons最后有StringUtils.overlay()和其他一些有用的String utils