Создание объектов в 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, это не сработает

Другие вопросы по тегам