2 回答

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是因?yàn)槟鶶tring.replace通過newStr在循環(huán)內(nèi)重新分配來覆蓋結(jié)果。因此,您只能看到最后一次替換的效果。
假設(shè) 的內(nèi)容upperCaseList是1, 5, 7。
在循環(huán)迭代 1 之后,newStr有I LoveMyDog
在循環(huán)迭代 2 之后,newStr有ILove MyDog(您沒有使用先前的結(jié)果,而是使用原始字符串)
在循環(huán)迭代 3 之后,newStr有ILoveMy Dog
試試這個(gè),
String newStr = w;
for (int i = 0; i < upperCaseList.size(); i++) {
newStr = newStr.replace(w.substring(upperCaseList.get(i), upperCaseList.get(i)+1), " "+ w.substring(upperCaseList.get(i), upperCaseList.get(i)+1));
}
不過有很多方法可以解決這個(gè)問題。不是存儲(chǔ)包含大寫字符的索引列表并使用String.substringand String.replace,您可以使用StringBuilder通過循環(huán)字符并檢查它是否是大寫/小寫來從原始字符串構(gòu)建字符串。
StringBuilder resultBuilder = new StringBuilder();
for (int i = 1; i < w.length(); i++) { //Note: Starting at index 1
if (Character.isUpperCase(w.charAt(i))) {
resultBuilder.append(" ")
.append(w.charAt(i));
} else {
resultBuilder.append(w.charAt(i));
}
}
System.out.println(resultBuilder.toString());

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
不確定您是如何創(chuàng)建 upperCaseList 的,我建議為所有人創(chuàng)建一個(gè)循環(huán)。希望下面的代碼可以滿足您的要求。
public void test(){
String str ="ILoveMyDog";
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i< str.length() ; i++) {
if(Character.isUpperCase(str.charAt(i))){
//add space
strBuilder.append(" ");
}
//add the orginal char
strBuilder.append(str.charAt(i));
}
//use toString method
System.out.println(strBuilder.toString());
}
添加回答
舉報(bào)