62,614
社区成员
发帖
与我相关
我的任务
分享
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]);
}
import java.util.ArrayList;
public class TestString
{
public static void main(String[] args)
{
String str = "{123.jpg}234{235.bmp}123{f_1.gif}";
String[] s = parse(str);
for (int i = 0; i < s.length; i++)
{
System.out.println(s[i]);
}
}
public static String[] parse(String s)
{
char c;
boolean flag = false;
StringBuffer sb = new StringBuffer();
ArrayList<String> list = new ArrayList<String>();// 这里后一个ArrayList不用加泛型
ArrayList<String> list2 = new ArrayList<String>();
for (int i = 0; i < s.length(); i++)
{
c = s.charAt(i);
if (i == 0)
{
sb.append(c);
}
else if (Character.isDigit(c) && flag == false)// flag
// 等于false时代表该数字为{}中的
{
sb.append(c);
}
else if (c == '.' || Character.isLetter(c))
{
sb.append(c);
}
else if (c == '{' && flag == true)
{
list.add(sb.toString());
sb = new StringBuffer();
sb.append(c);
flag = false;
}
else if (c == '}')
{
sb.append(c);
list.add(sb.toString());
sb = new StringBuffer();
flag = true;
}
else if (Character.isDigit(c) && flag == true)// flag等于true时代表该数字为{}外的
{
sb.append(c);
}
}
for (int i = 0; i < list.size(); i++)
{
if (list.get(i).matches("[0-9]{3,}"))
{
sb.append(list.get(i));
}
else if (list.get(i).charAt(1) == 'f')
{
sb.append(list.get(i));
}
else
{
list2.add(list.get(i));
}
}
list2.add(0, sb.toString());
return (String[]) list2.toArray(new String[list2.size()]);
}
}