日期:2014-05-20  浏览次数:20702 次

java string截取两个字符串之间的值
假设有一个字符串String str = "abc<icon>def</icon>deftfh<icon>a</icon>";
怎样可以取得<icon>与</icon>之间的字符串。取得的结果为def和a.求帮忙用java代码实现,谢谢。
string java

------解决方案--------------------
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MatcherTest {

public static List<String> match(String s) {
List<String> results = new ArrayList<String>();
Pattern p = Pattern.compile("<icon>([\\w/\\.]*)</icon>");
Matcher m = p.matcher(s);
while (!m.hitEnd() && m.find()) {
results.add(m.group(1));
}
return results;
}

/**
 * @param args
 */
public static void main(String[] args) {
String s = "dfdds<icon>image/expressions/p24.gif</icon>你好<icon>image/expressions/p25.gif</icon>";
System.out.println(Arrays.toString(MatcherTest.match(s).toArray(
new String[0])));
}

}

------解决方案--------------------
public class Demo
{
public static void main(String[] args)
{
String str="abc<icon>def</icon>deftfh<icon>a</icon>";
String[] res=get(str);
for(String re:res)
{
System.out.println(re);
}
}
public static String[] get(String str)
{
int indexStart=0;
StringBuilder sb=new StringBuilder();
while(indexStart<str.length())
{
int index1=str.indexOf("<icon>", indexStart);
int index2=str.indexOf("</icon>", indexStart);
int length=index2-index1-6;
for(int j=index1+6;j<=index1+6+length-1;j++)
{
sb.append(str.charAt(j));
}
sb.append(",");
indexStart=index2+7;
}
String[] result=sb.toString().split(",");
return result;
}
}