Создание объектов в Android из регулярных выражений
Я пишу приложение для Android, которое получает строку для анализа с помощью регулярных выражений. Допустим, это получает
'Tis an example image of a beaver {[beaver.jpg]} having an afternoon tea.
И что я хочу получить это TextView с 'Tis an example image of a beaver
, ImageView beaver.jpg
и еще один TextView having an afternoon tea.
,
Как (если возможно) возможно создание объектов после чтения такой строки и анализа с помощью регулярных выражений?
1 ответ
Ваш пользовательский класс представления должен иметь конструктор, который занимает три String
параметры, один для пути изображения, один для текста, который будет отображаться перед изображением, и один для текста, который будет отображаться позже.
class YourView {
public YourView(String imgPath, String beforeImg, String afterImg){
//add TextView for text before image
//add ImageView for image
//add TextView for text after image
}
}
Если ваше изображение всегда будет заключено в {[ ]}
Регулярное выражение (.+)\\{\\[(.+)\\]\\}(.+)
будет захватывать все до {[
в группе захвата 0, все между {[
а также }]
(т.е. путь к изображению) в группе 1, и все после }]
в группе 2.
Если вы используете Java Matcher
Затем вы можете достичь желаемого результата, как:
String pre, path, post;
while (matcher.find()){
pre = matcher.group(0);
path = matcher.group(1);
post = matcher.group(2);
YourView view = new YourView(path, pre, post);
//add view
}
Обратите внимание, что если изображение находится в конце или в начале текста, вы просто будете передавать пустые строки в качестве третьего / первого параметра здесь, что приведет к созданию пустых TextViews, которые должны быть безвредными (или вы можете сделать проверку, а не создавать ее для пустых строк).
Тем не менее, также обратите внимание, что приведенный выше код не проверен (но должен дать вам общее представление), и что я программист на Java с небольшим опытом работы с Android - поэтому дайте мне знать, если есть причина, специфичная для Android, это не сработает