无论String大小如何,如何在Java中获取String中的最后一个字符

Pup*_*vin 73 java string

我正在寻找一种从String中拉出最后一个字符的方法,无论大小如何.让我们把这些字符串放到示例中:

"abcd: efg: 1006746"
"bhddy: nshhf36: 1006754"
"hfquv: nd: 5894254"
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,完全随机的字符串,但它们最后有7个数字.我怎么能拿这7个号码?

编辑:

我只是意识到String[] string = s.split(": ");在这里工作得很好,只要我在数字中调用字符串[2],在中间调用字符串[1].

Jon*_*eet 137

怎么样:

String numbers = text.substring(text.length() - 7);
Run Code Online (Sandbox Code Playgroud)

这假定有 7个字符末,当然.如果你传递"12345",它将抛出异常.你可以这样解决:

String numbers = text.substring(Math.max(0, text.length() - 7));
Run Code Online (Sandbox Code Playgroud)

要么

String numbers = text.length() <= 7 ? text : text.substring(text.length() - 7);
Run Code Online (Sandbox Code Playgroud)

请注意,这仍然没有进行任何验证,结果字符串包含数字 - 如果text为null ,它仍将抛出异常.


Chr*_*odd 93

你可以做很多事情.

s.substring(s.lastIndexOf(':') + 1);
Run Code Online (Sandbox Code Playgroud)

在最后一次冒号之后会得到一切.

s.substring(s.lastIndexOf(' ') + 1);
Run Code Online (Sandbox Code Playgroud)

最后一个空间后的一切.

String numbers[] = s.split("[^0-9]+");
Run Code Online (Sandbox Code Playgroud)

分割所有数字序列; 数字数组的最后一个元素可能就是你想要的.

  • `lastIndexOf`方法的一个偶然的方面是,如果*不是*任何空格,`lastIndexOf`将返回-1,所以你最终得到整个字符串(`s.substring(0)`). (3认同)

Ric*_*lis 48

这个问题是"Java String Right"的Google搜索结果.

令人惊讶的是,还没有人提到Apache Commons StringUtils.right():

String numbers = org.apache.commons.lang.StringUtils.right( text, 7 );
Run Code Online (Sandbox Code Playgroud)

这也处理了textnull 的情况,其中许多其他答案会抛出NullPointerException.

  • 我也想知道。这种方式比处理所有可能出现的问题要安全得多。 (2认同)

She*_*han 22

这段代码非常适合我:

String numbers = text.substring(Math.max(0, text.length() - 7));
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以使用以下单行代码实现它:

String numbers = text.substring(text.length() - 7, text.length());
Run Code Online (Sandbox Code Playgroud)

但是如果输入字符串长度小于7,请务必捕获Exception.

如果你想得到最后的'N'个字符,你可以用任意数字N代替7.