确保字符串不超过给定长度

时间:2017-11-21 17:48:47

标签: java string java-8

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

3 个答案:

答案 0 :(得分:2)

如果字符串不是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 :(得分:1)

如果你不介意引入外部依赖,那么Apache Commons StringUtils就会有很多方便的帮助器方法来完成这类工作,包括一个空/长度安全的SubString。

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

我个人发现在纯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)