土豆_
2018-05-09 05:52
采纳率: 20%
浏览 1.8k
已采纳

JAVA截取多个字符串问题

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

24条回答 默认 最新

  • vvvvip用户 2018-05-10 02:15
    已采纳
     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);
                    }//兄弟,只能帮你到这里了,方法肯定不是最好的但是思路是最简单的
            }
        }
    
    }
    
    
    点赞 打赏 评论
  • loadding... 2018-05-09 06:00

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

    点赞 打赏 评论
  • oyljerry 2018-05-09 06:02

    用正则表达式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);
            }
    
    点赞 打赏 评论
  • 爱小静 2018-05-09 06:04

    这样试一下
    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);
            }
        }
    
    }
    
    点赞 打赏 评论
  • 诚哥丿 2018-05-09 06:05
    System.out.println("khk<q>998</q>kj7<q>888</q>kj".replaceAll("\\w+<q>(\\w+)</q>\\w+<q>(\\w+)</q>\\w+", "$1,$2"));
    
    点赞 打赏 评论
  • airfling 2018-05-09 06:06

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

    点赞 打赏 评论
  • 诚哥丿 2018-05-09 06:06
    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>
    
    点赞 打赏 评论
  • wlq199101 2018-05-09 06:07
     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));
              }
    
    点赞 打赏 评论
  • Tcytw 2018-05-09 06:07

    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;
    }

    点赞 打赏 评论
  • little_how 2018-05-09 06:08

    正则表达式:

     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);
        }
    

    希望可以帮到你....

    点赞 打赏 评论
  • 任强强会坚强 2018-05-09 06:10

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

    点赞 打赏 评论
  • 写代码的辉哥哥 2018-05-09 06:12

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

    
    
    点赞 打赏 评论
  • 写代码的辉哥哥 2018-05-09 06:12

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

    点赞 打赏 评论
  • gyzx828 2018-05-09 06:13

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

    点赞 打赏 评论
  • 写代码的辉哥哥 2018-05-09 06:13

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

    点赞 打赏 评论
  • Diudiu_2 2018-05-09 06:14

    Pattern pattern = Pattern.compile("

    (.*)

    ");
    Matcher matcher = pattern.matcher(str);
    点赞 打赏 评论
  • xinglei_lzjtu 2018-05-09 06:18

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

    点赞 打赏 评论
  • guofengtian1234 2018-05-09 06:22

    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);
    }

    点赞 打赏 评论
  • qq_33297929 2018-05-09 06:24

    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);
    }

    点赞 打赏 评论
  • ywj6792341 2018-05-09 06:30

    直接用正则表达式呀。

    点赞 打赏 评论
  • Colder丶 2018-05-09 06:57

    用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

    亲测。

    点赞 打赏 评论
  • xiaoshuobo 2018-05-09 07:42

    split()函数应该可以

    点赞 打赏 评论
  • qq_34197933 2018-05-09 09:02

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

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

    点赞 打赏 评论
  • weixin_39176603 2018-05-09 10:46

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

    点赞 打赏 评论

相关推荐 更多相似问题