• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

String支持正则表达式的相关方法和Object类

武飞扬头像
南 阳
帮助1


前言

本文将介绍关于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中用于处理和操作文本的强大工具。我们可以使用正则表达式来匹配、搜索和操作文本中的模式。熟练掌握正则表达式的语法和规则,可以帮助我们在开发过程中更高效地处理和操作字符串。

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgeihic
系列文章
更多 icon
同类精品
更多 icon
继续加载