我正在寻找一种从String中拉出最后一个字符的方法,无论大小如何。让我们把这些字符串放到例子中:
"abcd: efg: 1006746"
"bhddy: nshhf36: 1006754"
"hfquv: nd: 5894254"
正如您所看到的,完全随机的字符串,但它们最后有7个数字。我怎么能拿这7个号码?
编辑:
我刚刚意识到String[] string = s.split(": ");
在这里会很好用,只要我为数字调用字符串[2],在中间调用字符串[1]。
答案 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。它永远不会引发异常。