正如标题所示,我有一个家庭作业问题,但我无法解决。仅使用基本字符串方法(length、charAt、substring、equals、equalsIgnoreCase)和循环,我必须替换用户输入字符串中字符的所有实例,并使用用户想要代替的新字符打印新字符串老的。我不确定如何在不使用 indexOf 的情况下查找和存储字符串字符的所有实例。这是我编写的一些基本代码,任何指导将不胜感激。我不知道如何仅使用这些基本字符串方法来替换字符的所有实例。
String letter;
System.out.println("Enter the character you want to replace");
input = keyboard.nextLine();
int characterAt = 0;
for (characterAt = 0; characterAt < savedInput.length(); characterAt++)
{
letter = "" + savedInput.charAt(characterAt);
if(input.equals(letter))
{
System.out.println("Enter the new character");
input = keyboard.nextLine();
System.out.println("The new string is: " );
}
}
最佳答案
有几种方法可以做到这一点。您可以将字符串
转换为字符
数组 - String#toCharArray 。然后您需要迭代数组并将 char 替换为新值。
char[] chars = "lorem ipsum sit amet".toCharArray();
char newValue = 'X';
for (int i = 0; i < chars.length; i++) {
if (chars[i] == 'm') {
chars[i] = newValue;
}
}
System.out.println(new String (chars)); // loreX ipsuX sit aXet
您可能想使用StringBuilder
来实现类似的解决方案:
StringBuilder builder = new StringBuilder("lorem ipsum sit amet");
char newValue = 'X';
for (int i = 0; i < builder.length(); i++) {
if (builder.charAt(i) == 'm') {
builder.setCharAt(i, newValue);
}
}
System.out.println(builder); // loreX ipsuX sit aXet
您甚至可以使用 stream
API 来实现此目的:
String newString = "lorem ipsum sit amet".chars().map(el -> {
if ((char) el == 'm') {
return 'X';
} else {
return el;
}
}).collect(StringBuilder::new,
StringBuilder::appendCodePoint, StringBuilder::append)
.toString();
System.out.println(newString); // loreX ipsuX sit aXet
关于java - 仅使用循环替换字符串中字符的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42536551/