Java用指定字符从大字符串中截取多串小字符串

        今天遇到一个需求,一个超长字符串中包含多个图片地址,每个图片地址长度是相同的,需要只把其中的图片地址截取出来,实现过程如下:

        超长字符串: String sss = <p><img src="http://static.jhlnh.com/goods/201712/ad2564316c7941e989a420a857a335e3.jpg" style="float:left;" title="20171213_102317_000.jpg"/></p><p><img src="http://static.jhlnh.com/goods/201712/b24f2b4c52c54beb94ac51bbb8b2be35.jpg" style="float:left;" title="20171213_102317_002.jpg"/></p><p><img src="http://static.jhlnh.com/goods/201712/dcb0e87cee9141cf914023f44d8bafcb.jpg" style="float:left;" title="20171213_102317_003.jpg"/></p><p><img src="http://static.jhlnh.com/goods/201712/828688facd6f48b5ba6fec6706042799.jpg" style="float:left;" title="20171213_102317_004.jpg"/>

        需要把其中的绿色的图片地址取出来放到集合中,代码实现如下:

Pattern compile = Pattern.compile("src=");//创建切割对象,将以"src="切割字符串
String[] split = compile.split(sss);//执行切割,获得字符串数组
List<Map<String,Object>> list = new ArrayList<>();//创建集合用来装最终的图片地址
for (String s1 : split) {//对字符串数组遍历
if (s1.indexOf("http")!=-1) {//indexOf方法是寻找给定的字符"http"在字符串中的位置,并把该所在位置的索引值返回,如果找不到返回-1
String result = s1.substring(s1.indexOf("http"),s1.indexOf("jpg")+3);//substring方法用来截取字符串,包含头不包含尾,所以第二个参数要加3,如果第二个参数给的是"pg",那就是加2
Map<String,Object> map = new HashMap<>();//新建map用来装截取到的图片地址
map.put("src", result);//把此图片地址在map中的key全部命名为src,方便前端取数据
list.add(map);//把map装入到集合,使用集合的目的是解决key相同的问题
}
}
System.out.println(list);//打印集合,最终的结果如下:

[

{src=http://static.jhlnh.com/goods/201712/ad2564316c7941e989a420a857a335e3.jpg},

{src=http://static.jhlnh.com/goods/201712/b24f2b4c52c54beb94ac51bbb8b2be35.jpg},

{src=http://static.jhlnh.com/goods/201712/dcb0e87cee9141cf914023f44d8bafcb.jpg},

{src=http://static.jhlnh.com/goods/201712/828688facd6f48b5ba6fec6706042799.jpg}

]

 

 

posted @ 2018-10-29 16:08  程序员Kevîn  阅读(2072)  评论(0编辑  收藏  举报