gpt4 book ai didi

java - 如何替换字符串中第二次出现的字符? ( java )

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:29 25 4
gpt4 key购买 nike

private String theLetters = "_ _ _ _ _\n";



StringBuilder myName = new StringBuilder(theLetters);

for(char e : theSecretWord.toLowerCase().toCharArray())
{
if(e == theUsersGuess.charAt(0))
{
int index = theSecretWord.indexOf(e) * 2;
myName.setCharAt(index, theUsersGuess.charAt(0));
theLetters = myName.toString();
}
}

出于某种原因,这只会替换字符串 theSecretWord 中第一次出现的字母,而不是第二次出现的字母,即使每个循环都会遍历每个字符并相应地在 theLetters 中替换它。我不明白为什么它不会替换多次出现的字母。

我认为这是因为循环一旦找到匹配的字母就会停止,尽管它不应该停止。

最佳答案

private String replaceOccurrence(String text, String replaceFrom, String replaceTo, int occurrenceIndex)
{
StringBuffer sb = new StringBuffer();
Pattern p = Pattern.compile(replaceFrom);
Matcher m = p.matcher(text);
int count = 0;
while (m.find())
{
if (count++ == occurrenceIndex - 1)
{
m.appendReplacement(sb, replaceTo);
}
}
m.appendTail(sb);
return sb.toString();
}

例如,如果您想将第二次出现的“_”替换为“A”,则:

String theLetters = "_ _ _ _ _\n";
String replacedText = replaceOccurrence(theLetters, "_", "A", 2);

结果:_ A _ _ _

关于java - 如何替换字符串中第二次出现的字符? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21298187/

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