qshazi
土豆_
采纳率20%
2018-05-09 05:52

JAVA截取多个字符串问题

5
已采纳
 String str = "khk<q>998</q>kj7<q>888</q>kj";

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

24条回答

  • wohuozheng vvvvip用户 3年前
     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);
                    }//兄弟,只能帮你到这里了,方法肯定不是最好的但是思路是最简单的
            }
        }
    
    }
    
    
    点赞 1 评论 复制链接分享
  • qq_37554032 爱小静 3年前

    这样试一下
    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);
            }
        }
    
    }
    
    点赞 2 评论 复制链接分享
  • qq_41137110 loadding... 3年前

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

    点赞 1 评论 复制链接分享
  • weixin_39176603 weixin_39176603 3年前

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

    点赞 评论 复制链接分享
  • qq_34197933 qq_34197933 3年前

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

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

    点赞 评论 复制链接分享
  • xiaoshuobo xiaoshuobo 3年前

    split()函数应该可以

    点赞 评论 复制链接分享
  • SinY_Chan Colder丶 3年前

    用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

    亲测。

    点赞 评论 复制链接分享
  • ywj6792341 ywj6792341 3年前

    直接用正则表达式呀。

    点赞 评论 复制链接分享
  • qq_33297929 qq_33297929 3年前

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

    点赞 评论 复制链接分享
  • guofengtian1234 guofengtian1234 3年前

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

    点赞 评论 复制链接分享
  • xinglei_lzjtu xinglei_lzjtu 3年前

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

    点赞 评论 复制链接分享
  • Diudiu_2 Diudiu_2 3年前

    Pattern pattern = Pattern.compile("

    (.*)

    ");
    Matcher matcher = pattern.matcher(str);
    点赞 评论 复制链接分享
  • qq_36537809 写代码的辉哥哥 3年前

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

    点赞 评论 复制链接分享
  • gyzx828 gyzx828 3年前

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

    点赞 评论 复制链接分享
  • qq_36537809 写代码的辉哥哥 3年前

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

    点赞 评论 复制链接分享
  • qq_36537809 写代码的辉哥哥 3年前

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

    
    
    点赞 评论 复制链接分享
  • baidu_29765839 任强强会坚强 3年前

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

    点赞 评论 复制链接分享
  • w172087242 little_how 3年前

    正则表达式:

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

    希望可以帮到你....

    点赞 评论 复制链接分享
  • u012358960 Tcytw 3年前

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

    点赞 评论 复制链接分享
  • wlq199101 wlq199101 3年前
     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));
              }
    
    点赞 评论 复制链接分享
  • wushucheng18 诚哥丿 3年前
    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>
    
    点赞 评论 复制链接分享
  • airfling airfling 3年前

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

    点赞 评论 复制链接分享
  • wushucheng18 诚哥丿 3年前
    System.out.println("khk<q>998</q>kj7<q>888</q>kj".replaceAll("\\w+<q>(\\w+)</q>\\w+<q>(\\w+)</q>\\w+", "$1,$2"));
    
    点赞 评论 复制链接分享
  • oyljerry oyljerry 3年前

    用正则表达式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);
            }
    
    点赞 评论 复制链接分享