Получение подстроки из строки после определенного слова

У меня ниже String.

ABC Results for draw no 2888

Я хотел бы извлечь 2888 отсюда. Это означает, что мне нужно извлечь символы после no в приведенной выше строке.

Я всегда извлекаю число после слова no. Строка не содержит других комбинаций букв no в другом месте. Строка может содержать другие числа, и мне не нужно их извлекать. Всегда будет пробел перед числом, и число, которое я хочу извлечь, всегда будет в конце строки.

Как я мог этого добиться?


person Bishan    schedule 10.08.2014    source источник
comment
Может быть, это я, но ваш вопрос и, в частности, ваши требования кажутся неполными. Будете ли вы всегда извлекать число после слова «нет»? Будет ли строка содержать другие комбинации букв в других местах внутри нее? Будет ли строка содержать другие числа, которые вы не хотите или не хотите извлекать? Всегда ли будет пробел перед числом? Всегда ли число будет в конце строки? Пожалуйста, помогите прояснить мой затуманенный разум, уточнив ваши требования. Также покажите, что вы пробовали, и расскажите нам, как это не работает.   -  person Hovercraft Full Of Eels    schedule 10.08.2014
comment
@HovercraftFullOfEels Спасибо за информативный комментарий. Да, я всегда извлекаю число после слова no. Строка не содержит других комбинаций букв в других местах внутри нее. Строка может содержать другие числа, и мне не нужно их извлекать. Перед числом всегда есть пробел, и да, число, которое я хочу извлечь, всегда должно быть в конце строки.   -  person Bishan    schedule 10.08.2014
comment
Спасибо за разъяснение. Я уверен, что вы можете понять, почему эта информация должна была быть в вашем вопросе с самого начала.   -  person Hovercraft Full Of Eels    schedule 10.08.2014


Ответы (5)


Вы можете попробовать это

String example = "ABC Results for draw no 2888";
System.out.println(example.substring(example.lastIndexOf(" ") + 1));
person Rahul Tripathi    schedule 10.08.2014
comment
ты должен объяснить это - person Mubashir Murtaza; 16.06.2021

Вы всегда хотите стремиться к чему-то, что легко настроить и изменить. Вот почему я всегда рекомендую выбирать Шаблон регулярных выражений сопоставление с другими поисковыми запросами.

Пример, рассмотрим это для вашего примера:

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Play {
  public static void main(String args[]) { 
    Pattern p = Pattern.compile("^(.*) Results for draw no (\\d+)$");
    Matcher m = p.matcher("ABC Results for draw no 2888");
    m.find();
    String groupName = m.group(1);
    String drawNumber = m.group(2);
    System.out.println("Group: "+groupName);
    System.out.println("Draw #: "+drawNumber);
  }
}

Теперь из предоставленного шаблона я могу легко определить полезные части. Это помогает мне выявлять проблемы, и я могу идентифицировать дополнительные части шаблона, которые мне полезны (я добавил название группы).

Еще одно очевидное преимущество заключается в том, что я могу легко сохранить этот шаблон во внешнем файле конфигурации.

person YoYo    schedule 17.07.2015
comment
лучший ответ на вопрос // НО НЕ ТАК :( спасибо @YoYo - person prayagupd; 01.03.2017

вы также можете сделать что-то вроде этого

String demo="ABC Results for draw no 2888";

demo.substring(demo.indexOf("no") + 3)
person prachi julka    schedule 16.07.2020

Для тех, кто хочет добиться этого с помощью вездесущего Apache Commons StringUtils:

String parsed = StringUtils.substringAfter(yourString, "no ");
person Brujua    schedule 02.10.2020

person    schedule
comment
Вероятно, вам следует добавить trim в конец или заменить 2 на 3, чтобы получить только число... и добавить () после length. - person TNT; 10.08.2014
comment
также сделайте .length вызовом функции: .length(), или он будет блевать - person vwvan; 17.07.2015