Java 如何替换字符串中第二次出现的字符?(爪哇)
出于某种原因,这只会替换字符串TheCretword中出现的第一个字母,而不会替换第二个字母,即使此For each循环遍历每个字符并相应地替换字母中出现的字母。我不明白为什么它不能代替一封信的多次出现Java 如何替换字符串中第二次出现的字符?(爪哇),java,Java,出于某种原因,这只会替换字符串TheCretword中出现的第一个字母,而不会替换第二个字母,即使此For each循环遍历每个字符并相应地替换字母中出现的字母。我不明白为什么它不能代替一封信的多次出现 我认为这是因为一旦找到匹配的字母,循环就会停止,即使它不应该这样做。我认为这就是您要查找的代码 private String theLetters = "_ _ _ _ _\n"; StringBuilder myName = new StringBuilder(theLetters);
我认为这是因为一旦找到匹配的字母,循环就会停止,即使它不应该这样做。我认为这就是您要查找的代码
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();
}
}
另一种方法是
String word, letter;
word = "test";
letter = "t";
int i = 0;
i = word.indexOf(letter);
while (i > -1) {
// store i in arrayList
i = word.indexOf(letter, i + 1);}
通过使用StringBuilder,您可以使用以下代码实现这一点
String string1= "Hello";
int first=string1.indexOf('l');
String newstr= string1.substring(0, first+1);
String newstr2= string1.substring(first+1, string1.length()).replaceFirst("l", "k");
System.out.println(newstr+newstr2);
例如,如果要将第二次出现的“u”替换为“A”,则:
结果:u u查看字符串的文档:indexOf(char)总是让您第一次出现您的问题已经在这里解决了:是的,您是对的@mdewitt我完全忘记了这一点。使用两个参数形式的
indexOf
并开始搜索以前找到的位置+1。您实际想要实现什么?这是刽子手吗?
String string1= "Hello";
int first=string1.indexOf('l',string1.indexOf('l')+1);
StringBuilder SB = new StringBuilder(string1);
SB.setCharAt(first, 'k');
System.out.println(SB);
private String replaceOccurance(String text, String replaceFrom, String replaceTo, int occuranceIndex)
{
StringBuffer sb = new StringBuffer();
Pattern p = Pattern.compile(replaceFrom);
Matcher m = p.matcher(text);
int count = 0;
while (m.find())
{
if (count++ == occuranceIndex - 1)
{
m.appendReplacement(sb, replaceTo);
}
}
m.appendTail(sb);
return sb.toString();
}
String theLetters = "_ _ _ _ _\n";
String replacedText = replaceOccurance(theLetters, "_", "A", 2);