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

时间:2010-07-14 06:01:28

标签: java string

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

"abcd: efg: 1006746"
"bhddy: nshhf36: 1006754"
"hfquv: nd: 5894254"

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

编辑:

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

11 个答案:

答案 0 :(得分:135)

怎么样:

String numbers = text.substring(text.length() - 7);

当然,假设最后是 7个字符。如果你传递“12345”,它将抛出异常。你可以这样解决:

String numbers = text.substring(Math.max(0, text.length() - 7));

String numbers = text.length() <= 7 ? text : text.substring(text.length() - 7);

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

答案 1 :(得分:90)

你可以做很多事情。

s.substring(s.lastIndexOf(':') + 1);

将在最后一次冒号后得到所有内容。

s.substring(s.lastIndexOf(' ') + 1);

最后一个空格后的一切。

String numbers[] = s.split("[^0-9]+");

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

答案 2 :(得分:44)

此问题是“Java String Right”的Google搜索结果。

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

String numbers = org.apache.commons.lang.StringUtils.right( text, 7 );

这也处理text为空的情况,其中许多其他答案会抛出NullPointerException。

答案 3 :(得分:22)

这段代码非常适合我:

String numbers = text.substring(Math.max(0, text.length() - 7));

答案 4 :(得分:7)

您可以使用此单行代码

来实现
String numbers = text.substring(text.length() - 7, text.length());

但是如果输入字符串长度小于7 ,请确保捕获异常。

如果您想获得最后的'N'个字符,可以用任意数字N替换7,

答案 5 :(得分:4)

我会使用String.split或正则表达式:


使用String.split

String[] numberSplit = yourString.split(":") ; 
String numbers = numberSplit[ (numberSplit.length-1) ] ; //!! last array element

使用RegEx (需要import java.util.regex.*

String numbers = "" ;
Matcher numberMatcher = Pattern.compile("[0-9]{7}").matcher(yourString) ;
    if( matcher.find() ) {
            numbers = matcher.group(0) ;
    } 

答案 6 :(得分:1)

这应该有效

 Integer i= Integer.parseInt(text.substring(text.length() - 7));

答案 7 :(得分:1)

String inputstr = "abcd: efg: 1006746"
int startindex = inputstr.length() - 10;
String outputtendigitstr = inputstr.substring(startindex);

确保检查字符串长度是否超过10。

答案 8 :(得分:1)

StringUtils.substringAfterLast(“abcd:efg:1006746”,“:”)=“1006746”;

只要字符串格式固定,您就可以使用 substringAfterLast

答案 9 :(得分:0)

我会使用StringBuffer类,.reverse()字符串,再次得到.substring(0,7).reverse()结果。但那是3个电话。

答案 10 :(得分:0)

org.apache.commons.lang3.StringUtils.substring(s, -7) 

为您提供答案。如果输入小于7,则返回输入;如果s == null,则返回null。它永远不会引发异常。

请参见https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#substring-java.lang.String-int-int-