正则表达式1——String类和StringTokenizer类的使用方法,

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

进行本节学习之前需要先将下方内容熟练掌握

                                                                    元字符

元字符在正则表达式中的写法意义
.“.”代表任何一个字符

\d

“\\d”代表0~9的任何一个数字
\D“\\D”代表任何一个非数字字符
\s“\\s”代表空类字符"\t","\n","\x0B","\f","\r"
\S“\\S”代表非空格类字符
\w“\\w”代表可用于标识符的字符(不包括“$”)
\W“\\W”代表标识符类字符

                                                                括号元字符

[abc]   :代表a、b、c中的任何一个。

[^abc] :代表除了a、b、c的字符

[a-zA-Z]:代表英文字符(包含大小写)的任意一个

[a-b]:代表a~b的任何一个

[a-d[m-p]]:代表a-d和m-p的并集的字符

[a-z&&[d-f]]:代表a-z和d-f的交集

[a-d&&[^bc]]:代表a-d和bc的差集

注:由于“.”代表任意一个字符,所以在正则表达式中如果想表示普通意义的“.”字符的话就需要用[.]或\\.

                                                                        限定符

带限定符的模式意义
X?X出现0次或者1次
X*

X出现0次或者多次

X+X出现1次或者多次
X{n}X恰好出现n次

X{n,}

X至少出现n次
X{n,m}

X出现n,m次

XYX的后面紧跟Y
X|YX或者Y

一、正则表达式的用途

        正则表达式可以应用于提取一段信息中的有效数据,检验输入的内容是否合法,关键词检索之类

二、正则表达式的使用函数

        1、public String replaceAll(String regex,String replacement)和public boolean matches(String regex)

        public String replaceAll(String regex,String replacement)

                使用范例:str.replaceAll(regex," ")

                replaceAll函数的作用是将str中的包含regex的片段替换成为replacement

        public boolean matches(String regex)

                使用范例:str1.matches(regex)

                matches函数的作用是判str1中是否含有regex的片段,如果有那就返回true,反之则返回flase


public class example1 {
    public  static void  main(String args[]){
        String regex="-?[0-9][0-9]*[.]?[0-9]*";
        String str1="-0.618";
        String str2="999大家好,-123.45608明天放假了";
        if(str1.matches(regex)){
            System.out.println(str1+"可以表示数字");
        }
        else{
            System.out.println(str1+"不可以表示数字");
        }
        String result=str2.replaceAll(regex,"");
        System.out.println("剔除\""+str2+"\"中的数字,\n得到的字符序列是:");
        System.out.println(result);
}
}

运行结果如下

        2、public String [] spilt(String regex)

        public String [] spilt(String regex)

                使用范例: String word[]=str.split(regex);

                split()的作用是以regex作为剪刀,将str剪成一个个的片段,并将片段存放入数组中,因此str函数

import java.util.Scanner;

public class reporte {
    public static void main(String[] args) {
        System.out.println("请输入文本");
        Scanner reader= new Scanner(System.in);
        String str=reader.nextLine();
        String regex="[\\s\\d\\p{Punct}]+";
        String word[]=str.split(regex);
        for (int i=0;i<word.length;i++)
        {
            int m=i+1;
            System.out.println("单词"+m+":"+word[i]);
        }
    }
}

         3、StringTokenizer(String str,String delim)、public boolean MoreTokens()、public String nextToken()

        StringTokenizer(String str,String delim)这个函数就类似于构造一个类

                使用范例: StringTokenizer str=new StringTokenizer(s,"#")

                定义一个StringTokenizer对象str,并将字符串 s 以 # 分隔,逐个存入str中

        public boolean hasMoreTokens()

                使用范例: str.hasMoreTokens()

                检测StringTokenizer创造的字符序列中是否还有剩余数据

        public String nextToken()

                使用范例:str.nextToken()

                逐个返回str中被分隔开的信息,并且str每次被返回一个信息就会将该信息在StringTokenizer中删除

import java.util.StringTokenizer;

public class reporte {
    public static void main(String[] args) {
        String s="市话费:28.89,长途话费:128.87,上网费:298元";
        String regex="[^0-9.]+";
        s=s.replaceAll(regex,"#");//将 s 中的非数字信息替换为 #
        StringTokenizer fenxi=new StringTokenizer(s,"#");//将 s 中的 # 信息全部剔除,
                                                                // 并且将分解而得的 s 片段存入一个字符串数组中
        double toltalMoney=0;
        while (fenxi.hasMoreTokens())//hasMoreTokens()是一个boolean方法
                                     // 检测StringTokenizer创造的字符串数组中是否还有剩余数据
        {
            double money=Double.parseDouble(fenxi.nextToken());//next.Token()方法的意思是逐个将字符串数组中的信息输出
            /*Double.parseDouble()方法是一种特殊的强制类型转换方法,其中括号中的参数必须是String类型,否则转换会报错*/
//            相同的Integer.parseInt()方法与Double.parseDouble()方法用法相似
            System.out.println(money);
            toltalMoney+=money;
        }
        System.out.println("总金额为:"+toltalMoney+"元");
   
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值