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



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



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


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



Edit:



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

1919   10  

10 ответов:

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

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

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

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

все после последнего места.

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

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

как насчет:

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

это предполагает, что там are 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.

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

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

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

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

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

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

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

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

но обязательно поймать исключение, если длина входной строки меньше 7.

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

Я бы использовал либо String.split или регулярное выражение:


С Помощью Строки.сплит

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

Используя Регулярное Выражение (требуется 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));

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

пока формат строки фиксирован, вы можете использовать substringAfterLast.

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

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

убедитесь, что длина строки больше 10.

Comments

    Ничего не найдено.