Java学习笔记21(String类补充:正则表达式)

正如python的re模块,不过Java和Python的正则表达式有一些区别,这里做简单介绍,具体的细节可以参考网上其他的文章:

功能:可以用于检验一个字符串,比如验证用户名,验证密码格式,验证是否是邮箱,等等

示例:

"[0-9]{6,12}"匹配规则:6到12位的数字,比如123456789就是true,12345就是false

"1[3578][0-9]{9}"匹配规则:1开头,第二位是3578中的一个,后面九个任意数字,比如13345678912就是true

"a*b"匹配规则:在多个a或者0个a之后有一个b,b必须是最后一个字符,比如aaaaab就是true,abc就是false

String类中还有几个方法上篇没有提到,这里会用到

基础知识不再介绍,示例:

matches方法:

package demo;

public class RegexDemo {
    public static void main(String[] args) {
        //检查QQ号码,不能0开头,全数字,5位到10位
        checkQQ();
        //检查手机号,1开头,第二位是34578,共11位
        checkTel();
    }
    public static void checkQQ(){
        String QQ = "123456";
        boolean b = QQ.matches("[1-9][\\d]{4,9}");
        System.out.println(b);//true
    }
    public static void checkTel(){
        String telNumber = "13312345678";
        boolean b = telNumber.matches("1[34578][\\d]{9}");
        System.out.println(b);//true
    }
}

split方法:

package demo;

public class RedexDemo {

    public static void main(String[] args) {
        split_1();
        split_2();
        split_3();
    }

    public static void split_1(){
        String str = "I   love         java";
        String[] strArr = str.split(" +");
        for (int i = 0; i < strArr.length; i++) {
            System.out.println(strArr[i]);
        }
        //打印出:I         love       java
    }

    public static void split_2(){
        String str = "10-12-45-78-62";
        String[] strArr = str.split("-");
        for (int i = 0; i < strArr.length; i++) {
            System.out.println(strArr[i]);
        }
        //打印出:10           12        45        78        62
    }

    public static void split_3(){
        String str = "192.168.160.1";
        String[] strArr = str.split("\\.");
        for (int i = 0; i < strArr.length; i++) {
            System.out.println(strArr[i]);
        }
        //打印出:192    168        160        1
    }
}

replaceAll方法:

package demo;

public class RedexDemo {

    public static void main(String[] args) {
        replaceAll_1();
    }

    public static void replaceAll_1(){
        String str = "Hello666123Ilove789java";
        String str1 = str.replaceAll("[\\d+]","#");
        System.out.println(str1);
        //输出:Hello######Ilove###java

        String str2 = str.replaceAll("[\\d]+", "#");
        System.out.println(str2);
        //输出:Hello#Ilove#java
    }
}

正则表达式练习:

package demo;

public class RedexDemo {
    public static void main(String[] args) {
        //检查邮箱地址
        checkMail();
    }
    public static void checkMail(){
        String email = "[email protected]";
        boolean b = email.matches("[a-zA-Z0-9_][email protected][0-9a-z]+(\\.[a-z]+)+");
        System.out.println(b);//true
    }
}

原文地址:https://www.cnblogs.com/xuyiqing/p/8266896.html

时间: 2024-08-02 22:25:39

Java学习笔记21(String类补充:正则表达式)的相关文章

黑马程序员——JAVA学习笔记七(String类)

1,    String类一旦被初始化就不会被改变. 字符串不不能被改变,编译可以让字符串之间共享.编译器将各种字符串存放在公共的存储池子中.字符串变量指向存储池中相应的位置.实际上只有字符串常量.而+(除了常量相加)和其它方法操作的不是共享的. String s1 ="abc" ,String s2 = "abc" (他们存在公共池中),String s3 = new String ("abc"),存在堆中; 则s1== s2; s1! = s

非专业码农 JAVA学习笔记 6java工具类和算法-string

续<非专业码农 JAVA学习笔记 5 java工具类和算法> 五.字符串string 字符串和字符的差别:字符串双引号括起来”n”,字符用单引号括起来,表示一种符号’\n’ 1.string的主要方法和属性 类 方法或者属性 备注 定义string Stirng s=new string(“值”),string s=”值” 属性 string.length:string的长度为字节 方法startswith,endswith s.startwith(“值”)-以值为开头,s.endswith(

【原】Java学习笔记023 - 字符串缓冲区_正则表达式

1 package cn.temptation; 2 3 import java.util.Arrays; 4 5 public class Sample01 { 6 public static void main(String[] args) { 7 // 因为字符串创建后就不能修改,导致在进行字符串拼接时,会产生大量的中间字符串,创建对象都是需要消耗资源 8 // 所以,能不用字符串的直接拼接尽量不使用 9 10 // 字符串缓冲区:StringBuffer类/StringBuilder类

【原】Java学习笔记031 - 常用类

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 /* 6 * 类 Math:包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. 7 * 8 * Math类的常用字段: 9 * static double E :比任何其他值都更接近 e(即自然对数的底数)的 double 值. 10 * static double PI :比任何其他

Java学习笔记之String、StringBuffer和StringBuilder

更多博文可参考我的个人博客:贱贱的梦想 基本概念 String:此类代表字符串常量,它们的值在创建之后不能更改. StringBuffer:是一个线程安全的可变字符序列,它与String一样,在内存中保存的都是一个有序的字符串序列(char类型的数组),不同点是StringBuffer对象的值是可变的. StringBuilder:与StringBuffer类基本相同,都是可变字符串系列,不同点是StringBuilder是线程不安全的. 分析 简单的说,String类型和StringBuild

我的java学习笔记(21)关于框架定位

1.AWT和Swing中框架和组件类的继承层次. 2.组件类的很多方法是以获取或设置方法对形式出现的. public String getTitle(); public void setTitle(Stirng title); 3.对于类型为boolean的属性,获取方法由is开头. public boolean isLocationByPlatform(); public void setLocationByPlatform(boolean b); 4.如果没有明确地指出指定框架的大小,所有框

Java学习笔记21

Objects是Java 7新增的一个工具类,它提供了一些工具方法来操作对象,这些工具方法大多是"空指针"安全的. Objects实现的方法如下: requireNonNull(T)与requireNonNull(T,String)在源码中定义如下: public static <T> T requireNonNull(T obj) { if (obj == null) throw new NullPointerException(); return obj; } publ

java学习笔记7--抽象类与抽象方法

1.终结类与终结方法 被final修饰符修饰的类和方法,终结类不能被继承,终结方法不能被当前类的子类重写 终结类的特点:不能有派生类 终结类存在的理由: 安全: 黑客用来搅乱系统的一个手法是建立一个类的派生类,然后用他们的类代替原来的类 设计: 你认为你的类是最好的或从概念上你的类不应该有任何派生类 终结方法的特点:不能被派生类覆盖 终结方法存在的理由: 对于一些比较重要且不希望子类进行更改的方法,可以声明为终结方法.可防止子类对父类关键方法的错误重写,增加了代码的安全性和正确性 提高运行效率.

java学习笔记—实现一个类MyInputStream(28)

1 实现一个类MyInputStream读取文件,且不能抛出异常 public class TestDemo { public static void main(String[] args) throws Exception { InputStream in = new MyInputStream("d:/a/a.txt"); byte[] b = new byte[1024]; int len = 0; while((len=in.read(b))!=-1){ String s =