0

我正在编写一个 Android 应用程序,它使用正则表达式获取要解析的字符串。假设它得到

'Tis an example image of a beaver {[beaver.jpg]} having an afternoon tea.

而我想要得到的是 TextView 'Tis an example image of a beaver, ImageViewbeaver.jpg和另一个 TextView having an afternoon tea.

在读取此类字符串并使用正则表达式解析后,如何(如果可能)创建对象?

4

1 回答 1

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 
    }
}

如果您的图像将始终包含在 a{[ ]}中,则正则表达式(.+)\\{\\[(.+)\\]\\}(.+)将捕获{[第 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 
    }

请注意,如果图像位于文本的末尾或开头,您只需在此处将空字符串作为第三个/第一个参数传递,这将导致创建空的 TextView,这应该是无害的(或者您可以做一个检查,而不是为空字符串创建一个)。

也就是说,还要注意上面的代码未经测试(但应该给你一个大致的想法),并且我是一个在 Android 方面经验很少的 Java 程序员 - 所以如果有一个 Android 特定的原因,请告诉我这不起作用

于 2014-10-16T21:29:41.803 回答