Есть ли способ удалить начальные числа только из тех элементов, которые начинаются с числа, за которым следует точка? - PullRequest
1 голос
/ 11 ноября 2010

У меня есть данные в этом формате:

    1. New York Times - USA
    2. Guardian - UK
    Der Spiegel - Germany
    3. Le Monde - France
    Dagen - Denmark (12.6.2002)
    Norga-i-Dag (2) - Norway

Я хочу закончить с газетными значениями:

    New York Times
    Guardian
    Der Spiegel
    Le Monde
    Dagen
    Norga-i-Dag

Я использую этот код для анализа значений newspaper и country:

    String newspaper = "";
    String country = "";
    int hyphenIndex = unparsedText.indexOf("-");
    if (hyphenIndex > -1)
    {
        newspaper = unparsedText.substring(0, hyphenIndex);
    }
    country = unparsedText.substring(hyphenIndex + 1, unparsedText.length());
    country = country.trim();

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

    1. New York Times
    2. Guardian
    3. Le Monde

Другими словами, это было бы неплохо как компромисс:

    . New York Times - USA
    . Guardian - UK
    Der Spiegel - Germany
    . Le Monde - France
    Dagen - Denmark (12.6.2002)
    Norga-i-Dag (2) - Norway

Я хочу не создавать проблем для таких элементов, которые также содержат числа и / или точки:

    Dagen - Denmark (12.6.2002)
    Norga-i-Dag (2) - Norway

Ответы [ 5 ]

2 голосов
/ 11 ноября 2010

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

String text = unparsedText.replace("^[0-9]+\\. *", "");
1 голос
/ 11 ноября 2010

Это удалит все цифры, за которыми следует точка, за которой следует пробел, то есть 11.. ПРИМЕЧАНИЕ: Было бы лучше, если бы unparsedText было каждой строкой, иначе это может заменить элементы, которые вы хотите сохранить.

unparsedText.replaceAll('\\d+\.\\s+', '');
1 голос
/ 11 ноября 2010

Я уверен, что вы скоро получите множество ответов :-).В то же время, я думаю, вы извлечете пользу из учебника RegEx .Подсказка:специальный символ в регулярном выражении

0 голосов
/ 11 ноября 2010

Вы можете сделать следующее, чтобы напрямую преобразовать ваш вход в выход:

String result = input.replaceAll("(?m)^\\d+\\.\\s*|-(?!.*-)\\s*.*?$", "");

Код в действии

0 голосов
/ 11 ноября 2010
String resultString = subjectString.replaceAll("(?m)^\\d+\\.\\s*", "");

должен сделать.

Он удалит число, точку и дополнительные пробелы, но только в начале строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...