Java中的条件子串

Jac*_*son 1 java substring indexoutofboundsexception

假设我有一种方法可以将前3个字符组成一个字符串,如下所示:

public static String makeThree(String a){
  return a.toLowerCase().substring(0, 3);
}
Run Code Online (Sandbox Code Playgroud)

是否有任何内置/智能方法来处理StringIndexOutOfBoundsException错误,当一个只有2个字符的字符串被赋予方法时IE?在这种情况下,我希望它只是按原样返回它.

我可以把它构建成这样的if语句:

public static String makeThree(String a){
  if (a.length < 3) {
    return a
  } else {
    return a.toLowerCase().substring(0, 3);
  }
}
Run Code Online (Sandbox Code Playgroud)

但我只是想知道是否有更好的方法去做.

Cub*_*key 6

我唯一可以建议的是将它全部放到一行:

return (a.length < 3) ? a : a.substring(0,3).toLowerCase();
Run Code Online (Sandbox Code Playgroud)

这与您的代码完全相同:

if (a.length < 3) {
    return a
} else {
    return a.toLowerCase().substring(0, 3);
}
Run Code Online (Sandbox Code Playgroud)

我从其他人的回答中记下了一个注释,并.toLowerCase()在子串操作后移动了.这可以防止不必要地改变随后丢弃的字母的情况.