正则表达式、Math类、StringBuffer类和StringBuilder类

一、Java中的正则表达式

1.正则表达式就是记录文本规则的代码。用于进行文本匹配的工具,也是一个匹配的表达式。

先上一个小例子:
根据给定正则表达式的匹配拆分此字符串,得到拆分好的字符串数组。
public class RegexTest{
    public static void main(String[] args){
    String str = "dong,shuai,may,the,force,be,with,you";
    String[] str2 = str.split(",");//按照“,”对str拆分,得到str2数组
    for(int i = 0; i < str2.length; i++){
    System.out.println(str2[i]);
    }
    }
}

注意:
如果用“.”或”|”做分隔符,必须写成str.split(“\.”),因为“.”和”|”都是转义字符,必须加“\”。

2.下面是正则表达式的一些元字符:

\b 代表单词的开头或结尾,也就是单词的分界处。
\d匹配数字,a\d{3}表示连续重复匹配3次a。
\s 匹配任意的空白符。
^匹配字符串的开始。
$ 匹配字符串的结束。

3.如果要重复匹配,则有下面几种方式

    * 重复0次或多次。
    + 重复一次或多次。
    ? 重复0次或一次。
    {n} 重复n次。
    {n,} 重复n次或更多次
    {n,m}重复n次到m次

4.匹配几个字符放在中括号里

    [a,e,i,o,u]表示匹配英文任何一个元音字符。
    [.?!]表示匹配标点符号, . 或?或!
    [0-9]相当于\d

5.在java中有专门进行正则表达式的类,在java.util.regex包里面。

java.util.regex.Pattern类
java.util.regex.Matcher类

下面是一个匹配电话号码的例子:

/**
* 正则表达式
*/
import java.util.regex.*;
public class RegexTest{
    public static void main(String[] args){
        String str = "010-644659153";
        Pattern p = Pattern.compile("0\\d{2}-\\d{8}");//编译正则表达式字符串到pattern对象用以匹配的快速处理
        Matcher m = p.matcher(str);
        boolean flag = m.matches();//返回输入是否与模式匹配
        System.out.println("Your input is:" + flag);
    }
}

注意:由于java里“\”需要转义,应该变成“\”。

6.常见正则表达式:

(1)检查是否email地址
^([\\w-\\.]+)@((\\[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$
(2).判断输入的字符串只包含汉字
^[\u4e00-\u9fa5]+$
(3).匹配3位或4位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字符或空格间隔,也可以没有间隔
^\\(0\\d{2}\\)[- ]?\\d{8}$|^0\\d{2}[- ]?\\d{8}$|^\\(0\\d{3}\\)[- ]?\\d{7}$|^0\\d{3}[- ]?\\d{7}$
(4).判断输入的字符串是否是一个合法的手机号,以1开头。
^1\\d{10}$
(5)判断输入的字符串只包含数字,可以匹配整数和浮点数
^-?\\d+$|^(-?\\d+)(\\.\\d)?$
(6)匹配非负整数
^\\d+$
(7)判断输入的字符串只包含英文字母
^[A-Za-z]+$
(8)判断输入的字符串只包含数字和英文字母
^[A-Za-z0-9]+$

7.String类中正则表达式的用法

例子:

public class UseRegex{
    public static void main(String[] args){
        String str = "dongshuai";
        String regStr = "ong";
        str = str.replaceAll(regStr,"ONG");//用"ONG"替换所有str字符串中的regStr
        System.out.println("str = " + str);

        String str1 = "dong,shuai,dongshuai,gnod,iauhs,iauhsgnod";
        str1 = str1.replaceFirst(regStr,"ONG");//用"ONG"替换str字符串中的第一个regStr
        System.out.println(str1);

        String[] str2 = str1.split(",");//用“,”拆分此字符串
        for(int i = 0; i < str2.length; i++){
            System.out.println("str2[" + i + "] ==" + str2[i]);
        }

        String[] str3 = str1.split(",",3);//用“,”拆分此字符串,拆分后数组的length为3
        for(int i = 0; i < str3.length; i++){
            System.out.println("str3[" + i + "] == " + str3[i]);
        }
    }
}

二、Math类

Java中的数学(Math)类是final类,不可继承
示例如下:

/**
* Java中的数学(Math)类是final类,不可继承
* 包括一组静态方法和两个常数。
*/
//import java.util.Math;
public class MathTest{
    public static void main(String[] args){
        System.out.println(Math.PI);
        System.out.println(Math.E);

        double d = 100.001;
        double d1 = 10.001;
        double i = Math.ceil(d);//不小于d的最小整数
        double i1 = Math.floor(d);//b不大于d的最大整数
        double i2 = Math.round(d);//四舍五入
        double i3 = Math.abs(d);//绝对值
        double i4 = Math.min(d,d1);//两数中的小的数
        double i5 = Math.max(d,d1);//两数中的大的数
        double i6 = Math.log(d);//自然对数
        double i7 = Math.exp(d);//e的指数
        double i8 = Math.sqrt(d);//开平方
        double i9 = Math.random() * d;//随机数
        System.out.println(i);
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
        System.out.println(i5);
        System.out.println(i6);
        System.out.println(i7);
        System.out.println(i8);
        System.out.println(i9);
    }
}

三、StringBuffer和StringBuilder类

String类一旦创建对象,其内容不能修改
StringBuffer和StringBuilder创建的对象的内容可以修改。
StringBuffer适合多进程,安全。
StringBuilder适合单进程,运行快。

示例如下:

/**
* String生成的对象一旦创建,内容不能再被修改
* StringBuffer和StringBuilder类,对象的内容是可以被修改的
*/
public class StringBufferTest{
    public static void main(String[] args){
        StringBuffer buffer = new StringBuffer();
        buffer.append("d");//添加数值到StringBuffer对象中
        buffer.append("d");
        buffer.append("d");
        buffer.append("d");
        buffer.append("d");
        buffer.append("d");
        System.out.println(buffer.toString());

        StringBuilder builder = new StringBuilder();
        builder.append("s");
        builder.append("s");
        builder.append("s");
        builder.append("s");
        builder.append("s");
        builder.append("s");
        builder.append("s");
        System.out.println(builder.toString());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值