项      目,行次,本月数,本年累计,上年同期
三项费用合计,1,KB2010EYYFA01C2,KB2010EYYFB01D2,KB2010EYYFC01E2
销售费用,2,KB2010EYYFA02C3,KB2010EYYFB02D3,KB2010EYYFC02E3
办公费,3,KB2010EKBYY100201AC4,KB2010EKBYY100201BD4,KB2010EKBYY100201CE4
上面是一个Excel表中的数据片段,现在如何截取上面的字符串,让结果形成:项      目,行次,本月数,本年累计,上年同期
三项费用合计,1,YYFA01,YYFB01,YYFC01
销售费用,2,YYFA02,YYFB02,YYFC02
办公费,3,KBYY100201A,KBYY100201B,KBYY100201C即将单元格中的参数的前缀KB2010E,以及后缀C*, D*, E*都给截取掉,请问用Java如何实现?

解决方案 »

  1.   

    s = s.split("KB2010E")[1];
    s = s.substring(0,s.length-2);
      

  2.   

    lz加油
    我来帮你写个截取通用方法 其他通用 
    KB2010EYYFA01C2  将单元格中的参数的前缀KB2010E,以及后缀C*, D*, E*都给截取掉
    参数就是你传入的值  返回的就是你要的
    public static String ToSub(String str) {
    String[] splt = str.split("KB2010E");
    String nextStr = splt[1];
    StringBuffer bf = new StringBuffer(nextStr);
    bf.reverse();
    String result = bf.substring(2);
    bf = new StringBuffer(result);
    return bf.reverse().toString();}
      

  3.   

    应该用replaceAll就可以了,借助正则:
    str = str.replaceAll("^KB2010E", "").replaceAll("E.$", "");
      

  4.   

    不好意思,漏了CD:System.out.println("KB2010EYYFA01C2".replaceAll("^KB2010E", "").replaceAll("[CDE].$", ""));
      

  5.   


    这个要出问题吧,万一中间内容有CDE的你不是一起删掉了。
      

  6.   

    不好意思各位,你们好像没有理解我题的意思,我的意思是,循环截取字符串,将字符串KB2010E******C2,
    KB2010E******D2, KB2010E******E2.................以及后面的很多这样的参数,我要留下的是“******”,把前段的KB2010E跟后端的C2, D2, E2.....都去掉最后值保留 *******就可以了,好像各位的答案都有点问题哦~!
      

  7.   

    StringBuilder sb = new StringBuilder();
    sb.append("项 目,行次,本月数,本年累计,上年同期\n");
    sb.append("三项费用合计,1,KB2010EYYFA01C2,KB2010EYYFB01D2,KB2010EYYFC01E2\n");
    sb.append("销售费用,2,KB2010EYYFA02C3,KB2010EYYFB02D3,KB2010EYYFC02E3\n");
    sb.append("办公费,3,KB2010EKBYY100201AC4,KB2010EKBYY100201BD4,KB2010EKBYY100201CE4\n");

    System.out.println(sb.toString().replace("KB2010E", "").replaceAll("[A-Z][0-9],", ",").replaceAll("[A-Z][0-9]\n", "\n"));
      

  8.   

    StringBuilder sb = new StringBuilder();
    sb.append("项 目,行次,本月数,本年累计,上年同期\n");
    sb.append("三项费用合计,1,KB2010EYYFA01C2,KB2010EYYFB01D2,KB2010EYYFC01E2\n");
    sb.append("销售费用,2,KB2010EYYFA02C3,KB2010EYYFB02D3,KB2010EYYFC02E3\n");
    sb.append("办公费,3,KB2010EKBYY100201AC4,KB2010EKBYY100201BD4,KB2010EKBYY100201CE4\n");

    System.out.println(sb.toString().replace("KB2010E", "").replaceAll("[A-Z][0-9],", ",").replaceAll("[A-Z][0-9]\n", "\n"));
      

  9.   

    12楼能给出源代码不?要是就一句subString就能解决,我又何必发帖呢?
      

  10.   

    lz因为要截取长度不固定的字符串,用求字串函数显然一句并不能解决,可以考虑按照特征用indexOf()进行判断。或者试试用正则表达式来截取。
      

  11.   


    System.out.println("三项费用合计,1,KB2010EYYFA01C2,KB2010EYYFB01D2,KB2010EYYFC01E2".replaceAll("KB2010E", "").replaceAll("[CDE][0-9](,|$)", ","));运行结果
    三项费用合计,1,YYFA01,YYFB01,YYFC01,
      

  12.   

    请问楼上的大神,能不能帮我写个通用的方法嘞?这个一条是好截取,但是如果是整张Excel表,该如何截取嘞?而且后面截取的部分可能不一定是【CDE】【0-9】,可能还有两个到三个【0-9】,又该如何处理?