Вопрос регулярного выражения Java / Android - PullRequest
1 голос
/ 30 мая 2011

Я хотел бы создать регулярное выражение в Java / Android, которое усекает строку после или после третьей запятой. Это возможно? Любые предложения, чтобы начать меня в этом?

Ответы [ 4 ]

4 голосов
/ 30 мая 2011

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

  • Использование регулярных выражений ( ideone.com demo )

    Matcher m = Pattern.compile("(.*?,.*?,.*?),").matcher(str);
    if (m.find())
        str = m.group(1);
    

  • Использование indexOf / substring ( ideone.com demo )

    str = str.substring(0, str.indexOf(',',
                           str.indexOf(',',
                           str.indexOf(',') + 1) + 1));
    

3 голосов
/ 30 мая 2011

Взгляните на Pattern класс.

Альтернативы: String#split ваша строка или используйте StringTokenizer.

1 голос
/ 30 мая 2011
int comma = -1;
int n = 0;
do {
    comma = str.indexOf(',', comma + 1);
} while (comma >= 0 && ++n < 3);
if (comma > 0) {
    str = str.substring(0, comma);
} else {
    // third comma not found
}
1 голос
/ 30 мая 2011

Переведите s/([^,]*,){3}.+/\1/ в Java regex-ese, чтобы усечь после третьей запятой, s/([^,]*,[^,]*,[^,]*),.+/\1/, чтобы усеченная часть включала третью запятую.

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