java string以及正则(1)

 1:string类是不可变的,StringBuffer是可变的,可变与不可变:

String a ="asd";

String b="dfdf";

String c =a+ b;在内存中,相当于新建了一个字符串C,把俩者先后放到C里面。

StirngBuffer a ="asd";

StringBuffer b="dfdf";

a.append(b);在内存中,是将b加到a的字符串中,这就是不同。

那么对于下面设计字符串的累加,效率肯定高些

记住写具体的方法,charAt(),indexOg,startWith(),endWith(),toCharArray(),


2:正则表达式的内容

正则是一门艺术,对于java语言正则的学习,同样重要。在其他语言中,用\d表示一位数字,在其他语言中\\表示在正则中插入一个普通的反斜线,请不要给我任何特殊意义。

正如javascript一样:

一些标点如:^  $  .  *  ?  +  !  |   /  \  ( ) [  ] {  }具有特殊意义,要想在正则表达式中表现我i直接量用\, 写法/\d{3,5}\\/ 。表示一个反斜线

"javascript".search(/script/i);     234.matches(/\d(3,)/);

对于java而言,\\表示插入一个正则表达式的反斜线,后面的字符有特殊意义。如果你想表示一个数字,正则应该是\\d,  并且wo我们在字符串中\\反斜线表示一个\(转义字符),也就是说

"\\".matches("\\\\"); 正则中才行\\表示有特殊意义

表示js的特殊字符,同样需要俩个\\*才行


A:Stirng 的match 与 replaceAll ,replace,spilt

这些方法都是string提供的

      "-1234".match(-?\\d);

      String s  = "Splitting.knights"

   s.replaceAll( "Splitting " , "banana");


3:pattern ,Matcher ,以及方法find,matches,start,end,kongAt

空行的正则:/^(\\s&&[^\n])+\n$/

邮件的正则:/(\\w+[\\-])+@(\\w+[\\-])+\\.(\\w+[\\-])+$/

eg1:

           String s ="123-345-5678-12";
      Pattern p = Pattern.compile("\\d{3,5}");
      Matcher m = p.matcher(s);
System.out.println(m.matches()); 

      System.out.println(m.find());
      System.out.println(m.find());
      System.out.println(m.find());
      System.out.println(m.find());

结果:

false
true
true
false
false


    String s ="123-345-5678-12";
      Pattern p = Pattern.compile("\\d{3,5}");
      Matcher m = p.matcher(s);
               m.reset();
      System.out.println(m.matches());
    System.out.println(m.find());//匹配子串。

           //  System.out.println("m.start() :"+m.start() +" m.end() "+m.end());//获得查找字串的位置

    System.out.println(m.find());
    System.out.println(m.find());
    System.out.println(m.find());

           // System.out.println(m.lookingAt());//每次从最顶找字串,返回true

结果:

false
true
true
false
false

可见:m.matches与m.find()有冲突,matches从前到后看是否匹配,吞掉了已经匹配的字符。用reset才恢复。

下续..............................

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值