【关于String支持正则表达式的相关方法及Object类】


前言

本文将介绍关于String支持正则表达式的相关方法及Object类的相关内容

1.正则表达式

正则表达式是用来描述一个字符串的内容格式,使用它通常用来匹配一个字符串的内容是否符合格式要求.

基本语法

[]:表示一个字符,该字符可以是[]中指定的内容
例如:
预定义字符
.:"."表示任意一个字符,没有范围限制

\d:表示任意一个数字,等同于[0-9]

\w:表示任意一个单词字符,等同于[a-zA-Z0-9_ ]

\s:表示任意一个空白字符.

\D:表示不是数字

\W:不是单词字符

\S:不是空白字符

量词

?:表示前面的内容出现0-1次

例如:

abc? 可以匹配:a 或 b 或 c 或什么也不写

+:表示前面的内容出现1次以上

abc+ 可以匹配:aaaaaaaaaa…或abcabcbabcbabcbabcbabbabab…

但是不能匹配:什么都不写或abcfdfsbbaqbb34bbwer…

*:表示前面的内容出现任意次(0-多次)

匹配内容与+一致,只是可以一次都不写.

{n}:表示前面的内容出现n次

例如:

abc{3} 可以匹配:aaa 或 bbb 或 aab

不能匹配:aaaa或aad

{n,m}:表示前面的内容出现最少n次最多m次

abc{3,5} 可以匹配:aaa 或 abcab 或者 abcc

不能匹配:aaaaaa 或 aabbd

{n,}:表示前面的内容出现n次以上(含n次)

abc{3,} 可以匹配:aaa 或 aaaaa… 或 abcbabbcbabcbabcba…

不能匹配:aa 或 abbdaw…

()用于分组,是将括号内的内容看做是一个整体

例如:

(abc){3} 表示abc整体出现3次. 可以匹配abcabcabc.

不能匹配aaa 或abcabc

(abc|def){3}表示abc或def整体出现3.

可以匹配: abcabcabc 或 defdefdef 或 abcdefabc

2.String支持正则表达式的相关方法

matches方法

boolean matches(String regex)
使用给定的正则表达式验证当前字符串是否满足格式要求,满足则返回true.否则返回false

package string;

public class MatchesDemo {
    public static void main(String[] args) {
        /*
            邮箱的正则表达式
            用户名@域名
            fancq@tedu.cn
            [a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
         */
        String mail = "fancq@tedu.cn";
        String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
        boolean match = mail.matches(regex);
        if(match){
            System.out.println("是邮箱");
        }else{
            System.out.println("不是邮箱");
        }
    }
}

split方法

String[] split(String regex)
将当前字符串按照满足正则表达式的部分进行拆分,将拆分后的每部分以数组形式返回.

package string;

import java.util.Arrays;

public class SplitDemo {
    public static void main(String[] args) {
        String str = "abc123def456ghi";
        //按照数字部分拆分,获取其中每部分字母
        String[] arr = str.split("[0-9]+");
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));

        str = "123,456,789,023";
        //拆分出所有的数字部分
        arr = str.split(",");
        System.out.println(Arrays.toString(arr));
        //如果连续遇到拆分项,则会拆分出一个空字符串.但是在字符串末尾连续遇到则忽略.
        str = ",,,123,,,456,789,023,,,,";
        //拆分出所有的数字部分
        arr = str.split(",");
        System.out.println(Arrays.toString(arr));

        str = "123.456.789.023";
        //拆分出所有的数字部分
        arr = str.split("\\.");//.在正则表达式中表示任意字符,要注意转意!
        System.out.println(Arrays.toString(arr));
    }
}

replaceAll方法

String replaceAll(String regex,String str)
将当前字符串中满足正则表达式的部分替换为给定内容

package string;

public class ReplaceAllDemo {
    public static void main(String[] args) {
        String str = "abc123def456ghi";
        //将当前字符串中的数字部分替换为#NUMBER#
        str = str.replaceAll("[0-9]+","#NUMBER#");
        System.out.println(str);
    }
}

3.Object类

Object是所有类的顶级超类,其中有两个经常被子类重写的方法:

toString()与equals().

编写Point类进行测试

package object;

import java.util.Objects;

/**
 * 使用当前类测试超类Object中经常被子类重写的方法:equals与toString
 *
 * Point类设计目的是表示直角坐标系中的一个点
 */
public class Point {
    private int x;
    private int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Point point = (Point) o;
        return x == point.x && y == point.y;
    }

    @Override
    public int hashCode() {
        return Objects.hash(x, y);
    }

    @Override
    public String toString() {
        return "Point{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

}

编写测试类

package object;

public class TestPoint {
    public static void main(String[] args) {
        Point p = new Point(1,2);
        /*
            System.out.println(Object o)
            将给定对象toString方法返回返回的字符串输出到控制台

            toString方法是Object提供的方法,该方法默认返回的字符串为:
            类名@地址
         */
        System.out.println(p);
//        System.out.println(p.toString());
        /*
            任何类型与字符串链接结果都是字符串
            这意味着链接的类型会被转为字符串再进行链接。其他类型是如何
            转换为String?就是依靠toString方法
         */
        String line = "当前对象是:" + p;
        System.out.println(line);


        Point p2 = new Point(1,2);
        System.out.println("p2:"+p2);
        //==对于引用类型的意义是比较是否为同一个对象
        System.out.println(p==p2);//false  两个不同的对象
        //equals则是比较两个对象"像不像"(对象内容,特征是否一致)
        System.out.println(p.equals(p2));//true 两个对象的内容相同

    }
}

总结:

正则表达式是Java中用于处理和操作文本的强大工具。我们可以使用正则表达式来匹配、搜索和操作文本中的模式。熟练掌握正则表达式的语法和规则,可以帮助我们在开发过程中更高效地处理和操作字符串。

在实际应用中,正则表达式可以用于验证和提取数据、搜索和替换文本、过滤和分割字符串等各种场景。了解正则表达式的基本语法和常用操作,将为我们的编码工作提供强大的支持。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值