Чтобы лучше объяснить, что я имею в виду, давайте представим, что у меня есть файл csv с двумя столбцами «Имя» и «Фамилия», и будет сопоставьте их с токенами «++fname++» и «++lname++», и приложение сопоставит токен «++domain++» с «example.com». Вот пример CSV -
Код: Выделить всё
"First Name","Last Name
John,Doe
Jane,Smith
Код: Выделить всё
"++fname++" = "John"
"++fnamei++" = "J"
"++lname++" = "Smith"
"++lnamei++" = "S"
"++domain++" = "example.com"
Код: Выделить всё
String col[] = new String[4]();
col[0] = "++fname++";
col[1] = "++lname++";
col[2] = "++fname++ ++lname++";
col[3] = "++fnamei++.++lname++@++domain++";
for (int i = 0; i < col.length; i++ ) {
p.setString(i + 1,TokenEval(col[i]));
}
Код: Выделить всё
+++++++++++++++++++++++++++++++++++++++++++++
| John | Doe | John Doe | J.Doe@example.com |
Мои вопросы: во-первых, что будет лучше или чище: использование HashMap для сопоставления токенов со значениями и использование .get() для получения сопоставленного значения или реализация чего-то вроде таблицы SQL в памяти H2?
Во-вторых, делаем замену строк. Я знаю, что могу легко сопоставить и создать отдельные токены для fname и lname, но когда в строке или других символах есть несколько токенов, например для имени и электронной почты, я не уверен, какой подход будет лучшим. Я мог бы выполнить последовательность символов по строке и извлечь используемые токены, получить их и перестроить строку или, возможно, использовать indexOf() для поиска токенов и использовать .replace(), как только я узнаю, что они собой представляют. При таком большом количестве токенов выполнение .replace() для каждого из них для каждого поля заняло бы много времени. Или я могу передать строку на SQL-сервер H2, и он отправит обратно совпадения, а я выполню замену из результата? Или для этого приложения уже существует библиотека для сопоставления шаблонов/токенов в Java?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/785 ... late-style
Мобильная версия