我正在编写一个Android应用程序,它可以使用正则表达式解析字符串。假设它得到
'Tis an example image of a beaver {[beaver.jpg]} having an afternoon tea.
我想要得到的是带有'Tis an example image of a beaver
的TextView、ImageView beaver.jpg
和另一个TextView having an afternoon tea.
。
在读取这样的字符串并使用regex进行解析后,如何(如果可能的话)创建对象?
您的自定义视图类应该有一个构造函数,它接受三个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特定的原因,请告诉我这不起作用