Как вытащить переменные из строки - PullRequest
2 голосов
/ 02 июня 2011

Я ищу класс Java, который для заданной строки "$ {animal} перепрыгнул через $ {target}".может извлекать имена переменных, то есть 'animal' и 'target'.

Я надеялся StrSubstitutor в Commons Lang имел метод
getVariables(String str) : List<String>
.... но не повезло.

Да, я мог бы написать это сам, но я уверен, что существует сторонняя библиотека, которая делает это.

Ответы [ 2 ]

1 голос
/ 02 июня 2011

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

public List<String> getVariableNames(String source) {
  List<String> vs = new ArrayList<String>();
  Pattern p = Pattern.compile("\\$\\{(\\w+)\\}");
  Matcher m = p.matcher(source);
  while (m.find()) {
    vs.add(m.group(1));
  }
  return vs;
}

Сохранение шаблона в качестве переменной-члена повысит производительность.

0 голосов
/ 02 июня 2011

На самом деле я также искал подобную библиотеку при разработке DSL-адаптера для моего GenericFixture .

После просмотра некоторых библиотек и основанных на шаблонах фреймворков я в конце концов решилнаписать код сам.Не стесняйтесь проверять код, который я использовал для этой цели в DSLAdapter class из GenericFixture, доступной на sourceforge .

...