用相同索引替换不同字符的特定索引字符

时间:2014-12-07 00:24:25

标签: java regex string

我还是一个非常新的java,并且发现我花了很多时间来旋转我的轮子以寻找可能很简单的东西。我正在编写一个应用程序,它接受用户输入的文本字符串并将其放入charArray。从这里开始,我想使用replace方法将索引0处的字符替换为索引1处的字符。(我知道replace将更改字符串中与char(0)具有相同值的所有其他值。

if (input.equals(blank) || input.equals(mptee)){   
    System.out.println("You have choen to exit, Goodbye");
}

char[] stringToCharArray = input.toCharArray(); // convert string to charArray

for(char output : stringToCharArray) {
    System.out.print(output);
    //code to simplify character validation    
    Character x = input.charAt(0);       
    Character y = input.charAt(1);                  
    if( Character.isLetter(input.indexOf(0)) 
                        && ( Character.isLetter(input.indexOf(1))) ){
        input.replace(input.charAt(0),input.charAt(1));
    }
}
System.out.println(input);

虽然它接受一个字符串,并给出长度,但不会发生字符替换。我已经读过" indexOf" ,String RegEx等等。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

字符串是不可变的,因此在调用replace方法后,您需要将其分配回input。变化

input.replace(input.charAt(0),input.charAt(1));

input  = input.replace(input.charAt(0),input.charAt(1));

答案 1 :(得分:0)

String input = new String("abcdefgh");
input = input.substring(1, 2) + input.substring(1);
如果你想要的话,

会给你bbcdefgh吗?

是否必须将字符串转换为char数组并通过for循环? 我觉得有点不必要,因为你只是在第一个&第二个角色。

如果必须将其转换为char数组,那么这个呢?

String input = new String("abcdefgh");      
char[] stringToCharArray = input.toCharArray();

if(Character.isLetter(stringToCharArray[0]) && Character.isLetter(stringToCharArray[1]))
{
    // Replace character at index 0 with character at index 1
    stringToCharArray[0] = stringToCharArray[1];
}

input = String.valueOf(stringToCharArray); // Convert back to String
System.out.println(input); // Gives you bbcdefgh

实现您想要的方法有多种方法,所以也许您可以查看String文档?