我还是一个非常新的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等等。任何帮助将不胜感激。
答案 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文档?