gpt4 book ai didi

java - 如何在不使用 .replace 的情况下替换 Java 中字符串中的字符?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:05:57 26 4
gpt4 key购买 nike

该程序的目标是提示用户输入单个字符和一个短语,然后用“$”替换该短语中该字符的所有实例。我下面的程序就是这样做的,但是当我把它展示给我的教授时,我被告知我不能在我构建的方法中使用 .replace,所以我必须想办法不使用它。我已经研究了一段时间,到目前为止我知道我可以用 for 循环替换它,但经过几次令人沮丧的迭代后,我似乎无法正确处理。对不起,如果我的代码看起来很时髦,我仍然是一名入门级的 Java 学生,所以我仍在学习基础知识。我在下面的代码片段末尾提供了一个建议的解决方案。

public static char getKeyCharacter(String userInput) {

char keyCharacter;
Scanner inputStream = new Scanner(System.in);
while(userInput.length() > 1)
{
System.out.println("Please enter a SINGLE character to use as key: ");
userInput = inputStream.nextLine();
}
keyCharacter = userInput.charAt(0);

return keyCharacter;
}
public static String getString(String userResponse) {

Scanner inputStream = new Scanner(System.in);
String theString;
while(userResponse.length() > 500) {
System.out.println("Please enter a phrase or sentence >= 4 and <=500 characters: ");
userResponse = inputStream.nextLine();
}
while(userResponse.length() < 4) {
System.out.println("Please enter a phrase or sentence >= 4 and <=500 characters: ");
userResponse = inputStream.nextLine();

}

theString = userResponse;
return theString;

}
public static String maskCharacter(String theString, char keyCharacter){

String maskedString = "";
final char mask = '$';
maskedString = maskedString + theString.replace(keyCharacter, mask);
System.out.println("String with " + keyCharacter + " masked: ");
return maskedString;
}

public static String removeCharacter(String theString, char keyCharacter) {

String modifiedString = " ";
final char replaceChar = ' ';
modifiedString = modifiedString + theString.replace(keyCharacter, replaceChar);
System.out.println("String with " + keyCharacter + " removed:");
return modifiedString;

}

public static int countKey(String theString, char keyCharacter) {
int charCount = 0;
for (int c = 0; c < theString.length(); c++) {
if (theString.charAt(c) == keyCharacter) {
charCount++;
}
}
System.out.println("Occurences of " + keyCharacter + " in string:");
return charCount;
}

我相信解决方案看起来像这样,但到目前为止我一直没有成功 -

public static String maskCharacter(String theString, char keyCharacter){

String maskedString = "";
final char mask = '$';
for (int k = 0; k < theString.length(); k++) {
if (theString.charAt(k) == keyCharacter) {
keyCharacter = mask;
}
System.out.println("String with " + keyCharacter + " masked: ");
return maskedString;
}

我的问题在于使 maskedString = theString 的所有 keyCharacter 都被掩码替换。郑重声明,我还没有了解那些奇特的数组,所以如果有办法使用简单的 for 循环来做到这一点,我将不胜感激。提前感谢您的帮助!

最佳答案

我会使用 StringBuilderString#toCharArray() 以及一个简单的 for-each 循环。喜欢,

public static String maskCharacter(String theString, char keyCharacter){
StringBuilder sb = new StringBuilder();
for (char ch : theString.toCharArray()) {
if (ch == keyCharacter) {
sb.append('$'); // <-- mask keyCharacter(s).
} else {
sb.append(ch); // <-- it isn't the character to mask
}
}
return sb.toString();
}

关于java - 如何在不使用 .replace 的情况下替换 Java 中字符串中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com