Я хотел бы создать регулярное выражение в Java / Android, которое усекает строку после или после третьей запятой. Это возможно? Любые предложения, чтобы начать меня в этом?
Не уверен, что регулярные выражения будут моим первым подходом здесь.В любом случае, ниже приведены мои альтернативы.
Использование регулярных выражений ( ideone.com demo )
Matcher m = Pattern.compile("(.*?,.*?,.*?),").matcher(str); if (m.find()) str = m.group(1);
Использование indexOf / substring ( ideone.com demo )
indexOf
substring
str = str.substring(0, str.indexOf(',', str.indexOf(',', str.indexOf(',') + 1) + 1));
Использование nthOccurrence ( ideone.com demo )
nthOccurrence
str = str.substring(0, nthOccurrence(str, ',', 2));
Взгляните на Pattern класс.
Pattern
Альтернативы: String#split ваша строка или используйте StringTokenizer.
String#split
StringTokenizer
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 }
Переведите s/([^,]*,){3}.+/\1/ в Java regex-ese, чтобы усечь после третьей запятой, s/([^,]*,[^,]*,[^,]*),.+/\1/, чтобы усеченная часть включала третью запятую.
s/([^,]*,){3}.+/\1/
s/([^,]*,[^,]*,[^,]*),.+/\1/