JDK中的几个有用的类

JDK中的几个有用的类

       在今天的工作中,应用到了下面的这几个类,用处还是挺广泛的,在这里将它们的使用规则和使用说明简要的讲解一下,算是记一下随笔吧。

  1. java.util.StringTokenizer的应用
    也许大家都知道,它可以用来拆分字符串,是的,今天我在工作中碰到了这样的情况,于是顺便学习了一番。
    例:
    StringTokenizer st = new StringTokenizer("this is a test");
    while (st.hasMoreTokens()) {
          System.out.println(st.nextToken());
    }
    这个程序执行的结果,也就是将它按照空格分割开这个字符串,这也许就是它的默认分割方法吧。
    若是你将"this is a test"改为"this,is,a,test",那么你必须修改它的分割字符的规则,你需要在它的构造方法中改成这样:
    StringTokenizer st = new StringTokenizer("this,is,a,test",",");
    这样执行的结果,就可以按照逗号分割这串字符串了。打印的结果也就和刚才的结果一样。
    若你想将逗号也打印出来,那么你可以在这个构造方法后面加上true,就可以了。
    StringTokenizer st = new StringTokenizer("this,is,a,test",",",true);
    这样也就可以将逗号也打印出来了。可以看出,用它来分割一串字符串是很方便的,只要你指定了一种分割字符串的符号,那么就可以按照这个符号来分割字符串了。在分割的过程中,你还可以查看到你的分割统计,可以用StringTokenizer类的countTokens()方法来,查看在分割过程中的统计数字,可以看到它是递减的。
  2. java.util.regex.Matcher和java.util.regex.Pattern的应用
    大家都知道这是用于匹配正则表达式用到的,它的用法,我在这里简单的介绍一下:
    首先,要建立模式,然后根据这个模式来匹配所要查询的字符串。
    先介绍一下正则表达式的基础知识:符号的简介
    • 句点符号".":这个符号无论用到什么地方,它只可以匹配一个字符,也就是说,它只可以代表一个字符的位置,例如:"b.y"这个模式,它可以匹配的字符串可以像这样的形式:boy,bay,bty
    • 方括号"[]":该符号里可以指定匹配的字符串的单个字符,例如:b[oia]y这种模式,它可以匹配的字符串只可以是这样的形式:boy,biy,bay。其它的字符串就不允许出现了。
    • 或符号"|":这个符号的基本意义就是或运算,它的模式允许多个字符,而不仅是单个字符,例如:b(o|i|a|ee|)y,它匹配的字符串就可以是:boy,biy,bay,beey。可以看到它的匹配可以是多个字符,这里还用到了圆括号,圆括号可以用来分组。
    • 表示匹配次数的符号
      符号次数
      *0次或多次
      +1次或多次
      ?0次或1次
      {n}恰好n次
      {n,m}从n次到m次
    • 连字符"-",它表示一个范围,比如从0到9,因此,匹配号码中的连字符号时,它的前面要加上一个转义字符“/”。例如:电话号码:010-89201293,要匹配这样的字符串可以写这样的匹配器:[0-9]{3}/-[0-9]{8}。
    • 否符号"^",如果用在方括号内,"^"表示不想要匹配的字符。例如:[^b]表示第一个字符不能是b开头。
    • 空格符"/s",匹配所有的空白字符,包括Tab字符
    • 其它符号
      符号等价的正则表达式
      /d[0-9]
      /D[^0-9]
      /w[A-Z0-9]
      /W[^A-Z0-9]
      /s[/t/n/r/f]
      /S[^/t/n/r/f]

      例如:刚才的电话号码,就可以表示为/d{3}/-/d{8}
    • 分组:
      例如下面的程序:
              Pattern p = Pattern.compile("(//d{3})//-(//d*)");
              String str = "234 werweklsf2132wer123-234jkfs010-3232-wer";
              Matcher m = p.matcher(str);
              boolean result = m.find();
              System.out.println("该次查找获得匹配组的数量为:" + m.groupCount());
              while (result) {
                  System.out.println("匹配成功的字符:" + m.group());
                  result = m.find();
              }
      这有两个组,但是匹配的字符串也必须是(/d{3})/-(/d*)这样的样式,才可以匹配出字符串。这个例子的结果是:
      该次查找获得匹配组的数量为:2
      匹配成功的字符:123-234
      匹配成功的字符:010-3232
      在这个例子中可以看到使用它来匹配字符串是很方便的。再举一个例子:
      Pattern p = Pattern.compile("[,//s]+");
      String[] result = p.split("* 5,6 25 7-8 */5");
      for (int i=0; i<result.length; i++)
          System.out.println(result[i]);
      这个例子是用来按照空格来划分给出的字符串,用它就可以将字符串“* 5,6 25 7-8 */5”,划分出一组的字符串。结果是:
      *
      5
      6
      25
      7-8
      */5
      看看,用它来按空格划分字符串是多么方便呀!呵呵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值