Java 中的条件子串
Conditional substringing in Java
假设我有一种方法可以让前 3 个字符组成这样的字符串:
public static String makeThree(String a){
return a.toLowerCase().substring(0, 3);
}
是否有任何 built-in/smart 方法来处理 StringIndexOutOfBoundsException 错误,即当向该方法提供仅包含 2 个字符的字符串时?在这种情况下,我希望它按原样 return。
我可以将它构建成这样的 if 语句:
public static String makeThree(String a){
if (a.length < 3) {
return a
} else {
return a.toLowerCase().substring(0, 3);
}
}
但我只是想知道是否有更好的方法。
我唯一可以建议的是将其全部缩减为一行:
return (a.length < 3) ? a : a.substring(0,3).toLowerCase();
这与您的代码完全相同:
if (a.length < 3) {
return a
} else {
return a.toLowerCase().substring(0, 3);
}
我把别人的答案记下来,在子串操作后移动了.toLowerCase()
。这可以防止不必要地更改随后将被丢弃的字母的大小写。
如果可以放宽不返回小于3个字符的小写String的要求,可以
public static String getFirst3Chars(String str) {
return str.toLowerCase().substring(0, Math.min(3, str.length()));
}
我唯一推荐的建议包括:
将 toLowerCase
移动为第二个操作 - 在您的第一个 if 语句中,当 a.length < 3
时,您不会大写您的字符串
像这样:
String baseString = (a.length < 3) ? a : a.substring(0,3);
return baseString.toLowerCase();
没有专门的方法。您有这样的选择:
public static String makeThree(String a) {
return a.substring(0, Math.min(3, a.length())).toLowerCase();
}
这也只会将您真正想要的子字符串转换为小写,而不是转换整个内容然后丢弃其余部分。
Java 在像这样的简单任务中可能会非常严格和冗长。有多个项目试图让开发人员的生活更轻松,代码更具可读性。最受欢迎的库之一是 Apache Commons and its commons-lang 库。我强烈建议阅读它的文档,看看它提供了什么并尝试解决。
对于您的用例,有一个非常方便的方法 StringUtils#left。
假设我有一种方法可以让前 3 个字符组成这样的字符串:
public static String makeThree(String a){
return a.toLowerCase().substring(0, 3);
}
是否有任何 built-in/smart 方法来处理 StringIndexOutOfBoundsException 错误,即当向该方法提供仅包含 2 个字符的字符串时?在这种情况下,我希望它按原样 return。
我可以将它构建成这样的 if 语句:
public static String makeThree(String a){
if (a.length < 3) {
return a
} else {
return a.toLowerCase().substring(0, 3);
}
}
但我只是想知道是否有更好的方法。
我唯一可以建议的是将其全部缩减为一行:
return (a.length < 3) ? a : a.substring(0,3).toLowerCase();
这与您的代码完全相同:
if (a.length < 3) {
return a
} else {
return a.toLowerCase().substring(0, 3);
}
我把别人的答案记下来,在子串操作后移动了.toLowerCase()
。这可以防止不必要地更改随后将被丢弃的字母的大小写。
如果可以放宽不返回小于3个字符的小写String的要求,可以
public static String getFirst3Chars(String str) {
return str.toLowerCase().substring(0, Math.min(3, str.length()));
}
我唯一推荐的建议包括:
将 toLowerCase
移动为第二个操作 - 在您的第一个 if 语句中,当 a.length < 3
像这样:
String baseString = (a.length < 3) ? a : a.substring(0,3);
return baseString.toLowerCase();
没有专门的方法。您有这样的选择:
public static String makeThree(String a) {
return a.substring(0, Math.min(3, a.length())).toLowerCase();
}
这也只会将您真正想要的子字符串转换为小写,而不是转换整个内容然后丢弃其余部分。
Java 在像这样的简单任务中可能会非常严格和冗长。有多个项目试图让开发人员的生活更轻松,代码更具可读性。最受欢迎的库之一是 Apache Commons and its commons-lang 库。我强烈建议阅读它的文档,看看它提供了什么并尝试解决。
对于您的用例,有一个非常方便的方法 StringUtils#left。