我必须让我的程序大写句子的第一个字母,并且由于某种原因我的代码不起作用。我不知道为什么 - 我的代码看起来应该可以工作,我知道更好的责任归咎于Java中的“可能”错误,因为我缺乏经验。这是我到目前为止所得到的:
public class SentenceFormator {
public static String format(String str){
String fmts = str;
String temp;
//Finds first subString makes it capitalized and replaces it in original String.
temp = fmts.substring(0, 1).toUpperCase();
fmts = fmts.replaceFirst(fmts.substring(0,1), temp);
//Makes all other letters after beginning of sentence lower-case.
fmts = fmts.substring(1,str.length()-1).toLowerCase();
//Capitalizes all i's in the String.
fmts = fmts.replaceAll(" i ", " I ");
//Take away white spaces at the end and beginning of the String.
fmts = fmts.trim();
//Add punctuation if not already there.
if(!fmts.endsWith(".")||fmts.endsWith("!")||fmts.endsWith("?")){
fmts = fmts.concat(".");
}
//Takes away
for(int i = 0; i<str.length();i++){
}
return fmts;
}
}
答案 0 :(得分:0)
查看ACL WordUtils。
答案 1 :(得分:0)
看看你在代码中真正做了什么
//you store uppercase version of first letter in `temp`
temp = fmts.substring(0, 1).toUpperCase();
//now you replace first letter with upper-cased one
fmts = fmts.replaceFirst(fmts.substring(0,1), temp);
现在是你错误的时间
//here you are storing in `fmts` as lower-case part **after** first letter
//so `fmts =" Abcd"` becomes `fmts = "bcd"`
fmts = fmts.substring(1,str.length()-1).toLowerCase();
要更正它,您可以在新字符串的开头添加temp
值,如
fmts = temp + fmts.substring(1).toLowerCase();//BTW you can use `substring(1)`
//instead of `substring(1,str.length()-1)`
答案 2 :(得分:0)
String str = " hello world"
首先减少空间(避免前面的空格)
str = str.trim().replaceAll(" +", " ");
将第一个字母大写并小写其他所有内容(将它们都添加)
str = str.substring(0,1).toUpperCase() + str.substring(1,str.length()).toLowerCase();