如何将字符串中的每个“i”移动到java中的下一个位置

时间:2016-02-13 13:46:15

标签: java string

我想将给定字符串中的每个i向右移动一个索引。我怎样才能做到这一点?例如:

"Chit Nyein Oo is nothing.";

变为

"Chti Nyeni Oo si nothnig.";

如果最后一个索引中出现i,则无需更改其位置。

3 个答案:

答案 0 :(得分:4)

使用string.replaceAll

string.replaceAll("i(.)", "$1i");

DEMO

答案 1 :(得分:2)

编辑:现在它适用于所有条件。 String中的最后一封信是' i'是否有效。

public class t4 {
public static void main(String[] args) {

    String input = "Chit Nyein Oo is nothing.";
    char o = 'i';
    int indexes = 0;

    if(input.charAt(input.length()-1) != 'i'){ //Test if last letter is not 'i'
        for (int i = 0; i < input.length(); i++) {
            if(input.charAt(i) == o){       
                indexes++;
            }
        }
    int []positions = new int[indexes];

        for (int i = 0; i < input.length(); i++) {
            if(input.charAt(i) == o){
                positions[indexes-1] = i;
                indexes--;
            }
        }

        char[] characters = input.toCharArray();
        for (int i = 0; i < positions.length; i++) {    

            if(characters[input.length()-1] != 'i'){            
                char temp = characters[positions[i]];
                characters[positions[i]] = characters[positions[i]+1];
                characters[positions[i]+1] = temp;
            } else {
                continue;
            }
        }

        String swappedString = new String(characters);
        System.out.println(input);
        System.out.println(swappedString);

    } else { //so last letter is i
        char t = input.charAt(input.length()-1);            
        String ha = input.substring(0, input.length()-1);
        input = ha;
        for (int i = 0; i < input.length(); i++) {
            if(input.charAt(i) == o){       
                indexes++;
            }
        }

        int []positions = new int[indexes];
        for (int i = 0; i < input.length(); i++) {
            if(input.charAt(i) == o){
                positions[indexes-1] = i;
                indexes--;
            }
        }

        char[] characters = input.toCharArray();
        for (int i = 0; i < positions.length; i++) {
            if(characters[input.length()-1] != 'i'){            
                char temp = characters[positions[i]];
                characters[positions[i]] = characters[positions[i]+1];
                characters[positions[i]+1] = temp;
            } else {
                continue;
            }
        }
        String swappedString = new String(characters);
        swappedString = swappedString + Character.toString(t);
        System.out.println(input);
        System.out.println(swappedString);
    }
  }
}

答案 2 :(得分:1)

您可以使用StringBuilder

执行此操作
class Test {
    public static void main(String[] args) {
        String input = "Chit Nyein Oo is nothingi";
        int len = input.length();
        StringBuilder sb = new StringBuilder();
        // System.out.println(sb);

        for(int i=0; i<len; i++) {
            char charAti = input.charAt(i);
            if(charAti == 'i' && i<len-1) {
                sb.append(input.charAt(i+1));
                sb.append(charAti);
                i++;
            }
            else {
                sb.append(charAti);
            }
        }
        System.out.println(sb);
    }
}