你要如何比较,是不是你要在遇到J开头时就进行比较,
然后看此字符串是不是你要的JJJJJJJJ

解决方案 »

  1.   

    String s = "010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh";
    String[] a = s.split("-");
    for(int i = 0;i<a.length;i++)
    {
      a[i]=a[i].substring(a[i].indexOf("@")+1);
      System.out.println(a[i]);
    }
      

  2.   

    如要是上面的,你看谭浩强的<<C语言>>就可以了
      

  3.   

    String s="010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh";
    String p="(\\S){3}+@\\S";
    String s1=s.replaceAll(p,"");
    String[] s2=s1.split("-");
    for(int i=0;i<s2.length;i++)
    System.out.println(s2[i]);
      

  4.   

    先那010@a进去比较,取010@a到-中间的字符串,再拿020@b进去比较...依次类推
      

  5.   

    StringTokenizer st = new StringTokenizer("010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh","-");
      

  6.   

    我要说明一下,我的程序中需要取的是40多个,所以要一一比较!
    希望是下面这个思路的--
    那010@a进去比较,取010@a到-中间的字符串,再拿020@b进去比较...依次类推字符串里面不是每个xxx@x都有(比如第一个字符串有010@a,但是第二个字符串里却没有010@a)而且每个取出来后放的位置都不一定相同,需要的值也不相同,所以只能一个一个的取!
    希望能得到最简单的方法或者粗略代码,谢谢!
      

  7.   

    不是,其中有205@b,每个相同的xxx@后面有可能接不同的字母(比如,有010@a,010@b,200@a,205@a...)只能把四个全放进去我现在主要是想看看有什么比较简单的方法去做没,因为要比较的太多了!
    继续在线等待!!!
      

  8.   

    we are confused.post your 字符串.
      

  9.   

    701@4编著-200@f浪子燕青,无家的人,闲适人生,稻糠木,师嫣编著-215@a204页-330@a这是一本关于行走的书。它的作者群是一批被称为“驴”的自助旅行者,不在路上的日@-997@aH-540@A“ lv ” xing tian xia-701@a浪子燕青-005  20030607144306.5*-200@e旅行者眼中的风景-210@a武汉-830@alyz,-300@asina新浪新浪网特别推荐-701@Axian shi ren sheng-949@adkm-200@a“驴”行天下-210@c湖北人民出版社-701@Adao kang mu-801@aCN-949@alzyq-001  012000000794*-606@a游记-701@4编著-701@a师嫣-801@c20030607-010@a7-216-03657-3-102@b420000*-606@z当代-701@Alang zi yan qing-701@4编著-701@4编著-949@[email protected]@aCN-701@Awu jia de ren-701@a闲适人生-948@a“l”xtx-949@awjdr-100@a20030607d2003    em y0chiy0120    ea*-701@4编著-701@a稻糠木-701@Ashi yan-949@axsrs-106@ar*-200@A“ lv ” xing tian xia-606@x作品集-950@a7216036573-101@achi-210@d2003-690@[email protected]@ay   z   000yy*-215@c插图-000  01082nam0 2200301   450 *-215@d19cm-540@a“驴”行天下-606@y中国-701@a无家的人-801@bwbwh-
    上面的xxx@x有40多个,只取其中的28个
    把中间的xxx@x和-之间的取出来,顺序如下。其中没有的就不取200@A  1
    200@b  2
    200@d    3
    200@e  4
    200@f  5
    200@g  6
    205@a  7
    205@f  8
    206@a,207@a,208@a,230@a 9-12
    210@a  13
    210@c  14
    210@d    15
    210@g  16
    210@e  17
    210@h  18
    215@a    19
    215@c 20
    215@d  21
    215@e  22
    225@a  23
    225@e  24
    225@f    25
    225@h  26
    010@a  27
    010@d    28一共有8万多个这样的字符串所以我的思路是先那200@A进去比较,取得200@A到-中间的字符串,再拿200@b进去比较...依次类推
      

  10.   

    用正则表达式看看怎么样
    代码如下
    public class Test {
      public Test() {
      }
      public static void main(String[] args) {
        String str="010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh";
       args=str.split("\\-?\\d{3}@");
       for(int i=1;i<args.length;i++)
          System.out.println(args[i]);
      }
    如果达不到你的目的请告诉我改进~
      

  11.   

    楼上的朋友,可能你没仔细看我的问题的一些解释!
    因为每个 xxx@x 都是不一样的,不能单一的以@来取
    所以必须把每个xxx@x都做一次比较,取出其中的值,再拿下一个xxx@x进去比较!
      

  12.   

    String str=你需要解析的串;
    StringTokenizer token=new StringTokenizer(str,"-");
    String temp;
    while(token.hasMoreTokens()){
       temp=token.nextToken();
       System.out.print(temp.substring(temp.indexof('@')+1))
    }
      

  13.   

    你这个好像没有什么规律的如:
    330@a这是一本关于行走的书。它的作者群是一批被称为“驴”的自助旅行者,不在路上的日@-997@aH-540@A这里连续出了好几个@,但-对应不上
    实在没有好的解决办法就只有用笨办法了
    一个个的取吧
      

  14.   

    一个一个取,在中途遇到需要取但是其中却没有的时候,会出现数组越界,郁闷得哭~
    如果是有别的规律的就好办了~
    他里面每个字符串的排序规则和我需要的排序又是不一样的!
    而且两个字符串的排序都是不一样的!
    希望能想出点办法的朋友帮个忙!写个代码把我前面给的那个字符串取出来就可以了,谢谢大家!public class Test {
      public Test() {
      }
      public static void main(String[] args)
        {
         String str="010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh";
        args=str.split("010@a");
        String[] b=args[1].split("-");
        String c=b[0];
        System.out.println(c);
    }
    }
    我用这个办法取,如果args=str.split("010@b");的时候会出现数组越界,也就是没找到匹配的字符,哭啊~
      

  15.   

    330@a这是一本关于行走的书。它的作者群是一批被称为“驴”的自助旅行者,不在路上的日@-997@aH-540@A对上了啊,就是取330@a到...日@-的这个-之间的啊~
    比如997@aH-就是取出H~
    反正就是每个xxx@x和“-”之间的就是我要取的,不管是什么东西的说!
      

  16.   

    215@c插图-000  01082nam0 2200301   450 *-215@d这里我应该取到什么地方???
    从215@c开始,取“插图”还是一直取到“*”?你用这个"-"做分隔符,并不合适
    如果数据里已经有了"-",很容易混淆的
      

  17.   

    你把下面这段代码Copy过去试试,在我这里能够得到jjjjjjjj,lllllllll和hhhhhhhhhh    String args[];
        String str="010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh";
        args=str.split("\\-?\\d{3}@[a-zA-Z]");
           for(int i=1;i<args.length;i++)
              System.out.println(args[i]);
      

  18.   

    010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh-
    就比如上面的字符串,我要得到hhhhhhhhhhhhhjjjjjjjjjjjjjjj,但是不能把他分解成1个字符串数组,按照他在数组中的顺序来排
    必须取出030@c到他后面的第一个-,然后再取010@a到她后面的第一个-,...依次类推了,前面已经说了有40多个xxx@x只取其中的28个!前面有一个数据的例子,和排列顺序!
      

  19.   

    给个代码看看,就把我给的那个字符串,按照我给的顺序取出来!
    谢谢!
    用split()分解成字符串比较的话,如果你比对的字符在字符串里没找到会报数组越界
      

  20.   

    如果走数据库过我根本就不用取了!
    因为我的每个xxx@x.....都是在数据库里的相同ID的所有DATA取出来的!因为是服务器和客户端的通信,为的是减少服务器端的的操作,这样确实能提高N倍获得数据的时间!
      

  21.   

    如果所有的操作都是在客户端的,你可以把这些东西取出来以后放入树集(TreeSet)中,树集是有序的,然后你再取的时候也很方便。
      

  22.   

    树集是有序的,但是我的数据没序啊~
    在一个字符串里面的所有xxx@x是无序排列的~~关键就在他是无序的!!!
    无规律可寻,只能一个一个的取了!
      

  23.   

    一个一个取该怎么取?谁能给段代码?
    需要考虑其中有的 xxx@x是没有的!
    比如说没有"010@a   -",应该怎么弄!
    如果全都有的话,倒是能取出来了,但是现在遇到没有的就会报数组越界!
      

  24.   

    在DOWHILE时判断一下控制变量的值是否大于数组最大值,大于就跳出循环或是将控制变量置0再循环查找一次。
      

  25.   

    最好一次取出所有数据,用Hash表存储,然后根据需要去取数据:
    String[] val = {"200@A", "200@b", "200@d", "200@e", "200@f", "200@g", "205@a", "205@f", "206@a", "207@a", "208@a", "230@a", 
    "210@a", "210@c", "210@d", "210@g", "210@e", "210@h", "215@a", "215@c", "215@d", "215@e", "225@a", "225@e", "225@f", "225@h", "010@a", "010@d"};String str = "701@4编著-200@f浪子燕青,无家的人,闲适人生,稻糠木,师嫣编著-215@a204页-330@a这是一本关于";int index = str.indexOf('@');
    int index2 = str.indexOf('-', index + 1);HashMap map = new HashMap();
    while (index > 2 && index2 > 0) {
    String key = str.substring(index - 3, index + 2);
    String value = str.substring(index + 2, index2);
    map.put(key, value);
    index = str.indexOf('@', index2 + 1);
    if (index > 0) {
    index2 = str.indexOf('-', index + 1);
    }
    }
    System.out.println(map.get(val[4]));
      

  26.   

    实际上,用证则表达式非常发时间,如果不是很复杂的,可以用简单的indexOf方法。对于楼主的这个问题取字符串的条件非常简单,格式也是确定的。
      

  27.   

    Hash表有个特点就是,你想要什么样的顺序的结果就可以得到
      

  28.   

    差不多多该揭贴了,严重感谢xixigongzhu(夕夕公主) 
    难道你是传说中的美女,小生在次谢过了!