优雅的方法来确保字符串不超过给定的长度



我想知道使用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;
 }

如果您不介意拉出外部依赖性,则Apache Commons stringutils充满了方便的辅助方法,这些方法完全可以执行此类操作,包括Null/Rength Safe Safe Substring。P>

https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/commons/commons/lang3/stringutils.html.s.html#substring(java.lang.lang.string,int)

我个人在纯Java项目中发现,为无数助手使用Apache Commons几乎总是有益的。

上面说的是,您的代码很容易阅读,因此我不会竭尽全力更改它。

如果字符串不是null,则可以始终在04和字符串长度之间的最小值之间进行子字符串。将此与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更少的返回语句保留if-else结构

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)

最新更新