问题
如何在不首先进行大小检查(内联是可接受的)或冒险使用aIndexOutOfBoundsException
的情况下,如何使用Java中的字符串的firstn
字符?
#1 热门回答(278 赞)
这是一个简洁的解决方案:
String upToNCharacters = s.substring(0, Math.min(s.length(), n));
意见:虽然这个解决方案是"整洁的",但我认为这显然是一种使用if
/else
的解决方案。如果读者没有看到这个伎俩,他/她已经深入了解代码。 IMO,代码的含义在if
/ else
version中更为明显。有关更清晰/更易读的解决方案,请参阅@ paxdiablo的答案。
#2 热门回答(59 赞)
不要重新发明轮子......:
org.apache.commons.lang.StringUtils.substring(String s, int start, int len)
Javadocsays:
StringUtils.substring(null,,)= null
StringUtils.substring("",,)="";
StringUtils.substring("abc",0,2)="ab"
StringUtils.substring("abc",2,0)=""
StringUtils.substring("abc",2,4)="c"
StringUtils.substring("abc",4,6)=""
StringUtils.substring("abc",2,2)=""
StringUtils.substring("abc", - 2,-1)="b"
StringUtils.substring("abc", - 4)="ab"
从而:
StringUtils.substring("abc", 0, 4) = "abc"
#3 热门回答(18 赞)
Apache Commons Lang这是一个aStringUtils.left
方法。
String upToNCharacters = StringUtils.left(s, n);