我有一个对象(客户)数组,其中包含以下组件:first_Name和last_Name。我正在尝试将每个客户的名字和姓氏都转换为标题大小写。我尝试了几种将字符串转换为首字母大写的方法,但是所有方法都失败了。这是我尝试过的最后一件事,我无法弄清楚为什么它不能将大写的名字的首字母和姓氏的首字母大写。
for (Customer c : customers){
c.setFirst_name(c.getFirst_name().charAt(0).toUpperCase());
}
我已经检查了名字和姓氏是否确实包含一个只有字母的字符串,且每个字母的首字母均使用小写字母。 intellisense给我的错误是“无法取消引用字符”
答案 0 :(得分:0)
此方法将字符串的第一个字符大写,并将其余的小写:
public static String toTitle(String s) {
return (s.length() > 0) ? s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase() : "";
}
所以使用它:
for (Customer c : customers){
c.setFirst_name(toTitle(c.getFirst_name()));
c.setLast_name(toTitle(c.getLast_name()));
}
答案 1 :(得分:0)
String.charAt()返回一个char,它是原始类型,因此没有方法。因此,在那里不允许toUpperCase()调用。
您可能想要在其中创建一个Character对象,也许是一个String。我们不知道,因为您从未显示过setFirst_name()签名。
答案 2 :(得分:-1)
字符串值是不可变的。您尝试更改第一个种植者。那行不通。您必须创建一个新字符串:提取原始字符串的第一个字符,将其转换为大写并附加原始字符串的其余部分。