Подтвердить что ты не робот

Как получить последние символы в String в Java, независимо от размера строки

Я ищу способ вытащить последние символы из строки, независимо от размера. Давайте возьмем эти строки в пример:

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

Как вы можете видеть, полностью случайные строки, но у них есть 7 номеров в конце. Как я могу взять эти 7 номеров?

Edit:

Я только понял, что String[] string = s.split(": "); будет работать отлично здесь, пока я вызываю строку [2] для чисел и строки [1] для чего-либо посередине.

4b9b3361

Ответ 1

Множество вещей, которые вы могли бы сделать.

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

получит все после последнего двоеточия.

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

все после последнего пробела.

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

разделяет все последовательности цифр; последний элемент массива чисел, вероятно, вы хотите.

Ответ 2

Как насчет:

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 имеет значение null.

Ответ 3

Этот код отлично работает для меня:

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

Ответ 4

Этот вопрос является лучшим результатом Google для "Java String Right".

Удивительно, но никто еще не упомянул Apache Commons StringUtils.right():

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

Это также обрабатывает случай, когда text имеет значение null, где многие другие ответы будут вызывать исключение NullPointerException.

Ответ 5

Вы можете достичь этого, используя эту единственную строку :

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

Но обязательно catch Exception, если длина входной строки меньше 7.

Вы можете заменить 7 на любое число, например N, если вы хотите получить последние символы "N".

Ответ 6

Я бы использовал либо String.split, либо regex:


Использование 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) ;
    } 

Ответ 7

Это должно работать

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

Ответ 8

Я бы использовал класс StringBuffer, .reverse() строку, снова получив результат .substring(0,7) и .reverse(). Но это 3 вызова.

Ответ 9

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

Убедитесь, что вы проверяете длину строки более 10.