例子:{123.jpg}234{235.bmp}123{f_1.gif}1,该字符串代表用户接受的信息。
2,{xxx.jpg}代表接受到的是自定义图片(后缀jpg、png、gif、bmp);{f_1.gif}代表系统表情(f_开头);其他的代表文字信息。
3,要将系统表情与文字信息取出来作为一个单独的字符串,比如上面的将取出为234123{f_1.gif};自定义表情将单个单个的取出,分别作为字符串,比如上面的字符串将取出为{123.jpg}、{235.bmp};
4,现在的想法是写一个函数,传入处理前的字符串后,返回一个数组,索引[0]代表文字加系统表情,索引[1]、[2]...代表每一个自定义表情,最终返回如下
new String[]{ "234123{f_1.gif}", "{123.jpg}", "{235.bmp}"};
5,这个算法应该怎么写,求达人,谢谢。
2,{xxx.jpg}代表接受到的是自定义图片(后缀jpg、png、gif、bmp);{f_1.gif}代表系统表情(f_开头);其他的代表文字信息。
3,要将系统表情与文字信息取出来作为一个单独的字符串,比如上面的将取出为234123{f_1.gif};自定义表情将单个单个的取出,分别作为字符串,比如上面的字符串将取出为{123.jpg}、{235.bmp};
4,现在的想法是写一个函数,传入处理前的字符串后,返回一个数组,索引[0]代表文字加系统表情,索引[1]、[2]...代表每一个自定义表情,最终返回如下
new String[]{ "234123{f_1.gif}", "{123.jpg}", "{235.bmp}"};
5,这个算法应该怎么写,求达人,谢谢。
public static void main(String[] args) {
String src = "xxx{f_222.gif}{123.jpg}3234{235.bmp}12f3{f_0.gif}fddd";
String[] results = splitMessage(src);
for (int i = 0; i < results.length; i++) {
System.out.println(results[i]);
}
} public static String[] splitMessage(String source) {
Pattern pattern = Pattern.compile("([{]\\d+\\.\\D{3}[}])");
Matcher matcher = pattern.matcher(source); ArrayList<String> lstTemp = new ArrayList<String>();
while (matcher.find()) {
String pic = matcher.group();
lstTemp.add(pic);
source = source.replace(pic, "");
}
lstTemp.add(0, source);
return (String[]) lstTemp.toArray(new String[0]);
}
显示结果:
xxx{f_222.gif}323412f3{f_0.gif}fddd
{123.jpg}
{235.bmp}