Java разделить регулярное выражение - PullRequest
1 голос
/ 18 апреля 2010

Если у меня есть строка, например

setting=value

Как я могу удалить '=' и превратить его в две отдельные строки, содержащие 'setting' и 'value' соответственно?

Большое спасибо!

Ответы [ 2 ]

10 голосов
/ 18 апреля 2010

На ум приходят два варианта.

Первые split() с String по =:

String[] pieces = s.split("=", 2);
String name = pieces[0];
String value = pieces.length > 1 ? pieces[1] : null;

Второй использует регулярные выражения непосредственно для анализа String:

Pattern p = Pattern.compile("(.*?)=(.*)");
Matcher m = p.matcher(s);
if (m.matches()) {
  String name = m.group(1);
  String value = m.group(2);      
}

Второй дает вам больше силы. Например, вы можете автоматически потерять пробел, если измените шаблон на:

Pattern p = Pattern.compile("\\s*(.*?)\\s*=\\s*(.*)\\s*");
1 голос
/ 18 апреля 2010

Для этого вам не нужно регулярное выражение, просто сделайте:

String str = "setting=value";
String[] split = str.split("=");
// str[0] == "setting", str[1] == "value"

Возможно, вы захотите установить limit, если value тоже может содержать =; см javadoc

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