假设我有一种方法可以将前3个字符组成一个字符串,如下所示:
public static String makeThree(String a){
return a.toLowerCase().substring(0, 3);
}
是否有任何内置/智能方法来处理StringIndexOutOfBoundsException错误,当给出方法只有2个字符的字符串时,是否为I.E?在这种情况下,我希望它按原样返回。
我可以把它构建成这样的if语句:
public static String makeThree(String a){
if (a.length < 3) {
return a
} else {
return a.toLowerCase().substring(0, 3);
}
}
但我只是想知道是否有更好的方法来解决它。
答案 0 :(得分:6)
我唯一可以建议的是将它全部放到一行:
return (a.length < 3) ? a : a.substring(0,3).toLowerCase();
这与您的代码完全相同:
if (a.length < 3) {
return a
} else {
return a.toLowerCase().substring(0, 3);
}
我从其他人那里得到了一张纸条&#39;在子字符串操作之后回答并移动.toLowerCase()
。这可以防止不必要地改变随后丢弃的字母的情况。
答案 1 :(得分:3)
Java在这样的简单任务中可以非常严格和冗长。有多个项目试图让开发人员的生活更轻松,代码更具可读性。其中最受欢迎的是Apache Commons及其commons-lang库。我强烈建议您查看其文档,了解它提供的内容并尝试解决。
对于您的用例,有一个很方便的方法StringUtils#left。
答案 2 :(得分:2)
如果可以放宽不返回小于3个字符的小写字符串的要求,则可以
public static String getFirst3Chars(String str) {
return str.toLowerCase().substring(0, Math.min(3, str.length()));
}
答案 3 :(得分:1)
我建议的建议仅包括:
移动toLowerCase
作为第二个操作 - 在你的第一个if语句中,当a.length&lt; 3
像这样:
String baseString = (a.length < 3) ? a : a.substring(0,3);
return baseString.toLowerCase();
答案 4 :(得分:1)
没有具体的方法。你有这样的选择:
public static String makeThree(String a) {
return a.substring(0, Math.min(3, a.length())).toLowerCase();
}
这也只会将您想要的子字符串转换为小写字母,而不是转换整个事物然后将其余部分抛弃。