我想知道使用Java 8是否有更快捷和/或更优雅的方式来实现这一目标。 我想要一个不超过最大长度的字符串(最多4个字符)
input "" -> ""
input null -> null
input abc -> abc
input abcde -> abcd
some function (string s){
if(s==null)
return null;
if(s.length()>4)
return s.substring(1,4);
return s;
}
答案 0 :(得分:2)
如果字符串不是null
,则始终可以在0
和4
之间的最小值与字符串长度之间取一个子字符串。将它与Java 8的Optional
相结合,您可以在单个语句中执行此操作:
private static String noMoreThanFour(String str) {
return Optional.ofNullable(str)
.map(s -> s.substring(0, Math.min(4, s.length())))
.orElse(null);
}
答案 1 :(得分:1)
如果你不介意引入外部依赖,那么Apache Commons StringUtils就会有很多方便的帮助器方法来完成这类工作,包括一个空/长度安全的SubString。
我个人发现在纯Java项目中,为无数的帮助者使用Apache Commons几乎总是有益的。
如上所述,您的代码易于阅读,因此我不会擅自改变它。
答案 2 :(得分:1)
保留if-else结构<1>的减少1个返回语句
if(s==null || s.length()<=4){
return s;
}else return s.substring(0,4);
另一个词干将是使用条件表达式,但它不会更具可读性
return (s==null || s.length()<=4)? s:s.substring(0,4)