Java中的子字符串 - 长度最大为一个值

use*_*421 9 java string substring

我正在尝试创建一个子字符串,这个子字符串最多可以包含6个字母的字母,但是当我找到一个少于6个字母的姓氏时,我在这里似乎会抛出错误,我一直在寻找解决方案的时间没有成功:/

id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,6).toLowerCase();
System.out.print ("Here is your ID number: " + id);
Run Code Online (Sandbox Code Playgroud)

就是这样.substring(0,6).我需要它最多 6个字母而不是6个字母.

错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
    at java.lang.String.substring(Unknown Source)
    at Test.main(Test.java:27)
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 37

使用

secondName.substring (0, Math.min(6, secondName.length()))
Run Code Online (Sandbox Code Playgroud)

  • `secondName.lenght()`获取String的长度.`Math.min()`得到最低值,这意味着如果字符串的长度小于6则返回该值.但如果字符串的长度高于6,则返回6. (2认同)

Joã*_*des 6

我更喜欢

secondName.length > 6 ? secondName.substring(0, 6) : secondName
Run Code Online (Sandbox Code Playgroud)


Rob*_*ker 5

尝试 Apache Commons StringUtils 类。

// This operation is null safe.
org.apache.commons.lang.StringUtils.substring(secondName, 0, 6);
Run Code Online (Sandbox Code Playgroud)