当前位置:首页
开发技术指南» 文章正文
    引言:

 ·安装时出现的    »显示摘要«
    摘要: portio.dll. 可安装的虚拟设备驱动程序之dll起始设置失败。选择“关闭”终止应用程序。 ......
    摘要: 我用winrar做了一个雅俗共赏文件,压缩的是vfp安装文件,咳上传或下载时,提示找不到服务器,也就是说不能下载或上传。不知什么原因,请帮助。 ......


关于字符串的问题,在线等待

比如有这样一个字符串   010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh  
   
  怎么样取出jjjjjjjj,lllllllll和hhhhhhhhhh  
  也就是每个xxx@x和-之间的字符串!  
   
  请尽快回答,我可以尽快揭贴

NO.1   作者: blasterboy

你从头开始判断,如果看到@就准备开始在第二个开始保存字符串。到‘-’就停止

NO.2   作者: ttwandln

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

NO.3   作者: fft123

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

NO.4   作者: ttwandln

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

NO.5   作者: wobelisk

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

NO.6   作者: Gigle

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

NO.7   作者: Gigle

然后再subString(3)

NO.8   作者: fft123

是不是都是0x0的格式?  
  那直接取“0@”比较不就可以了???  
  就是取0@与-之间的值

NO.9   作者: wobelisk

we   are   confused.  
   
  post   your   字符串.  
 

NO.10   作者: fft123

不能直接取@和-之间的吗???  
  最好把你的字符串写出来看看  
  这样说不清楚的

NO.11   作者: ngqzmjmj

用正则表达式看看怎么样  
  代码如下  
  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]);  
      }  
  如果达不到你的目的请告诉我改进~

NO.12   作者: tanghuan

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

NO.13   作者: fft123

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

NO.14   作者: fft123

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

NO.15   作者: CoolAbu)

你把下面这段代码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]);

NO.16   作者: CoolAbu)

那你只有一个一个的读了,没有什么好办法的。  
   
  字符串其实不管你要取多少个,你对这个字符串进行某种操作,已经把它全部读入内存了,28个和40个并没有什么差别。

NO.17   作者: CoolAbu)

这样把,我看你的整个字符串是无序的,用一个简单一点的方法,你按-分割,然后把它们存入数据库,通过数据库排序,然后一个个的取出,很方便吧?  
   
  ;)

NO.18   作者: CoolAbu)

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

NO.19   作者: wjfxiao

应该说只能一个个的取了  
  没有好的办法  
  因为实在是没有规律啊

NO.20   作者: 79cy

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

NO.21   作者: xixigongzhu)

最好一次取出所有数据,用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]));  
 

NO.22   作者: xixigongzhu)

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


    摘要: 看下面:  declare @fail_time datetime, @fail_test varchar(30), @ssn varchar(30) begin set @ssn=ws04038456 if exists (select ssn from testrecord(nolock) where ssn=@ssn and status=f and ssn not in (sele......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE