我在寫一個賦值方法。用Java劃分和字符串中的單詞
描述:如果一個字符串包含一個包含大寫字母的單詞,我的方法需要大寫整個單詞。
所以「你好計算器,我的名字是約翰」將產生「你好計算器,我的名字是約翰」
我的代碼:
/*Helper method for capitalizeWords() capitalizes word if necesarry*/
private static String capitalizeWord(String s, int position) {
int i = position;
String word = "";
String testWord = "";
while (s.charAt(i) != ' ' && i < s.length() - 1) {
word += s.charAt(i);
i++;
}
word += " ";
testWord = word.toLowerCase();
if (!testWord.equals(word)) {
word = word.toUpperCase();
}
return word;
}
public static String capitalizeWords(String s) {
StringBuilder newString = new StringBuilder();
if (s.length() == 1) {
newString.append(s.charAt(0));
return newString.toString();
}
for (int i = 0; i < s.length(); i++) {
if (i == 0) {
newString.append(capitalizeWord(s, i));
} else if (s.charAt(i) == ' ') {
newString.append(capitalizeWord(s, i + 1));
}
}
return newString.toString();
}
正如你可以看到我的代碼是低效的,當運行,跳過字符串的最後一個字符:
HW2.capitalizeWords("Guess what?? There are twenty-sIx letters in the English alphABEt!")
"GUESS what?? THERE are TWENTY-SIX letters in the ENGLISH ALPHABET "
我不能想辦法解決,而無需手動添加的最後一個字符,這可能將是對這個分配分折換貨。我寧願學習解決這個問題的正確,有效的方法(給出允許的方法),而不是努力想出一個粗略的解決方案。
你們有沒有介意給我一些想法?我不能使用substring
或indexOf
。
我會看看使用.split方法並提供一個空格作爲參數。看到這裏:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String) –
是的開始與分割字符串的字或者字符串.split或一個StringTokenizer。然後,您可以檢查每個單詞的第一個字符,以決定是否必須將其大寫。 – hotzst
@hotzst不一定是第一個,任何角色。 – Tunaki