Создание значений в объектах с помощью Regex (Java) - PullRequest
0 голосов
/ 05 ноября 2010

У меня есть некоторые данные, которые выглядят так:

myobject{keyone:"valueone",keytwo:"valuetwo",keythree:"valuethree"}
myobject{keyone:"valueone",keytwo:"valuetwo",keythree:"valuethree"}
myobject{keyone:"valueone",keytwo:"valuetwo",keythree:"valuethree"}

И мне интересно, каков будет лучший способ создать из него кучу объектов.Я написал следующее регулярное выражение для извлечения всех значений из определенного ключа ...

Pattern p_keyone            = Pattern.compile("keyone:\"(.+?)\"\\,"); 
Matcher match_keyone    = p_keyone.matcher(string);

while(match_keyone.find()) {      
    myobjects.add(new MyObject(match_keyone.group(1));
}

, что дает мне набор объектов с одним аргументом ...

myobjects.add(<valueone>);

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

new MyObject( <valueone>, <valuetwo> , <valuethree> );

Спасибо

Ответы [ 2 ]

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

String.split() может помочь:

 String line = "myobject{keyone:\"valueone\",keytwo:\"valuetwo\",keythree:\"valuethree\"}"
             // ^-----[0]------^  ^--[1]-^  ^--[2]-^  ^--[3]-^  ^--[4]---^  ^--[5]---^  ^[6]
 String[] parts = line.split("\"");
 MyObject myObject = new MyObject(parts[1], parts[3], parts[5]);
0 голосов
/ 05 ноября 2010

Ваш подход не плохой.

Мало что можно изменить, хотя в зависимости от ваших требований они имеют смысл:

  • Создайте класс «Фабрика», который берет 1 строку данных и создает объект.
  • Читайте данные построчно, для каждой строки используйте Factory для их создания.
  • В зависимости от того, насколько вы хотите (и подвержены ошибкам), вы можете даже прочитать имена объектов и свойств, а затем использовать отражение для создания экземпляров и установки свойств.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...