如何在Java中获取string中的最后一个字符,而不考虑string大小
我正在寻找一种方法来从string中取出最后一个字符,而不pipe大小。 让我们把这些string作为例子:
"abcd: efg: 1006746" "bhddy: nshhf36: 1006754" "hfquv: nd: 5894254"
正如你所看到的,完全随机的string,但是最后有7个数字。 我将如何能够采取这7个数字?
编辑:
我刚刚意识到那个String[] string = s.split(": ");
在这里工作会很好,只要我把string[2]和string[1]称为中间的任何东西。
很多事情你可以做。
s.substring(s.lastIndexOf(':') + 1);
会在最后一个冒号后得到一切。
s.substring(s.lastIndexOf(' ') + 1);
最后一个空间之后的一切
String numbers[] = s.split("[^0-9]+");
拆分所有的数字序列; 数组数组的最后一个元素可能是你想要的。
怎么样:
String numbers = text.substring(text.length() - 7);
当然,假设最后有7个字符。 它会抛出一个exception,如果你通过它“12345”。 你可以这样解决:
String numbers = text.substring(Math.max(0, text.length() - 7));
要么
String numbers = text.length() <= 7 ? text : text.substring(text.length() - 7);
请注意,这仍然没有做任何validation,结果string包含数字 – 它仍然会抛出一个exception,如果text
为空。
这段代码完美地适用于我:
String numbers = text.substring(Math.max(0, text.length() - 7));
这个问题是“Java String Right”的最高Google结果。
令人惊讶的是,没有人提到Apache Commons StringUtils.right() :
String numbers = org.apache.commons.lang.StringUtils.right( text, 7 );
这也处理了text
为空的情况,其中许多其他答案会抛出一个NullPointerException。
你可以使用这个单行代码实现它:
String numbers = text.substring(text.length() - 7, text.length());
但是如果input的string长度小于7,一定要捕获exception 。
如果你想得到最后的“N”个字符,你可以用任意数字N代替7。
我会使用String.split
或正则expression式:
使用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) ; }
这应该工作
Integer i= Integer.parseInt(text.substring(text.length() - 7));
我将使用StringBuffer类, .reverse()
string,再次获取.substring(0,7)
和.reverse()
结果。 但这是3个电话。
String inputstr = "abcd: efg: 1006746" int startindex = inputstr.length() - 10; String outputtendigitstr = inputstr.substring(startindex);
确保你检查string的长度是多于10。