JAVA截取多个字符串问题

 String str = "khk<q>998</q>kj7<q>888</q>kj";

有这样一个字符串 ,我想要截取多个q标签中间的内容,要怎么写

 package b;

import org.apache.commons.lang.StringUtils;

public class SplitString {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "khk<q>998</q>kj7<q>888</q>kj";
        String[] s=str.split("<q>");//先以<q>标签截取
        for (int i = 0; i < s.length; i++) {
                if(s[i].contains("</q>")){//判断是否含有</q>结束标签
                    String ss=StringUtils.substringBefore(s[i],"</q>");
                    //以上StringUtils是在org.apache.commons.lang.StringUtils中;在网上找个就行了
                    System.out.println(ss);
                }//兄弟,只能帮你到这里了,方法肯定不是最好的但是思路是最简单的
        }
    }

}

用java里面的split(String)方法截取字符串,了解下

用正则表达式split

        String a = "khk<q>998</q>kj7<q>888</q>kj";
        String[] z = a.split("<q>(.+)?</q>");
        for (String x : z) {
            System.out.printf("%s\n", x);
        }

这样试一下
String str = "khk998kj7888kj";

    String[] s = str.split("<q>");
    for (int i = 0; i < s.length; i++)
    {
        int strEndIndex = s[i].indexOf("</q>");
        /* index 为负数 即表示该字符串中 没有该字符 */
        if (strEndIndex < 0)
        {
            continue;
        }
        else
        {
            String result = s[i].substring(0, strEndIndex);
            System.out.println(result);
        }
    }

}
System.out.println("khk<q>998</q>kj7<q>888</q>kj".replaceAll("\\w+<q>(\\w+)</q>\\w+<q>(\\w+)</q>\\w+", "$1,$2"));

str..replaceAll("","").replaceAll("","")

System.out.println("khk<q>998</q>kj7<q>888</q>kj".replaceAll("\\w+(<q>\\w+</q>)\\w+(<q>\\w+</q>)\\w+", "$1$2"));
    //结果是这样的:<q>998</q><q>888</q>
 String regex="<q.*?>(.*?)</q>";
          Pattern p =Pattern.compile(regex);
          String str = "khk<q>998</q>kj7<q>888</q>kj";
          Matcher m=p.matcher(str);
          while(m.find()){
           System.out.println(m.group(1));
          }

List list = new ArrayList();
while(str.indexOf("") != -1){
list.add(str.substring(str.indexOf("" + 3), str.indexOf("")));
if(str.length() > str.indexOf("
") + 5)
str = str.substring(str.indexOf("") + 4);
else break;
}

正则表达式:

 public static void getInQ() {
        String s = "khk<q>998</q>kj7<q>888</q>kj";
        //如果不是数字,可以改成(.+?)
        Pattern pattern = Pattern.compile("<q>(\\d+)</q>");
        Matcher matcher = pattern.matcher(s);
        List<String> values = new ArrayList<String>();
        while (matcher.find()) {
            values.add(matcher.group(1));
        }
        System.out.println(values);
    }

希望可以帮到你....

split()+正则表达式来进行截取

String[] substringsBetween = StringUtils.substringsBetween("khk998kj7888kj", "", "");


有个工具包,org.apache.commons.lang3.StringUtils;
String[] substringsBetween = StringUtils.substringsBetween("khk998kj7888kj", "", "");

String a = "khk998kj7888kj";
String[] z = a.split("(.+)?");
for (String x : z) {
System.out.printf("%s\n", x);
}

该死的浏览器,,,String[] substringsBetween = StringUtils.substringsBetween("testString", "arg1", "arg2");

Pattern pattern = Pattern.compile("

(.*)

");
Matcher matcher = pattern.matcher(str);

Pattern pattern = Pattern.compile("(\d+)");

public static void getInQ() {
String s = "khk998kj7888kj";
//如果不是数字,可以改成(.+?)
Pattern pattern = Pattern.compile("(\d+)");
Matcher matcher = pattern.matcher(s);
List values = new ArrayList();
while (matcher.find()) {
values.add(matcher.group(1));
}
System.out.println(values);
}

public static void getInQ() {
String s = "khk998kj7888kj";
//如果不是数字,可以改成(.+?)
Pattern pattern = Pattern.compile("(\d+)");
Matcher matcher = pattern.matcher(s);
List values = new ArrayList();
while (matcher.find()) {
values.add(matcher.group(1));
}
System.out.println(values);
}

直接用正则表达式呀。

用split()不行,通用的话还是需要使用正则表达式,下面是示例代码:
String str = "khk998kj7888kj";
String regex = "(.*?)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.match(str);
while (matcher.find())
System.out.println(matcher.group(1));


输出结果:
998
888

亲测。

split()函数应该可以

通过StringUtils提供的方法
使用StringUtils
如:StringUtils.substringBefore(“dskeabcee”, “e”);
结果是:dsk
这里是以第一个”e”,为标准。

StringUtils.substringBeforeLast(“dskeabcee”, “e”)
结果为:dskeabce
这里以最后一个“e”为准。

使用str.split("");生成一个数组,取出数组里的值就行了