String+正则,实现字符串快速调整 | 带你学《Java语言高级特性》之二十五

简介: 了解了正则表达式的相关内容,可以发现正则表达式服务于字符串,而Java中String类也针对正则表达式提供了一系列的便捷方法以供调用,让我们一起来使用正则快速处理字符串吧。

上一篇:使用正则必备标记 | 带你学《Java语言高级特性》之二十四
了解了正则表达式的相关内容,可以发现正则表达式服务于字符串,而Java中String类也针对正则表达式提供了一系列的便捷方法以供调用,让我们一起来使用正则快速处理字符串吧。

【本节目标】
通过阅读本节内容,你将接触到String类针对正则表达式所提供的一系列操作方法,并结合实例代码对其功能有了初步的理解,学会在开发过程中运用这些方法实现字符串的快捷操作。

String类对正则的支持

在进行正则表达式大部分处理的情况下都会基于String类来完成,并且在String类里面提供有如下与正则有关的操作方法:

No 方法名称 类型 描述
01 Public boolean matches​(String regex); 普通 将指定字符串进行正则判断
02 public String replaceAll​(String regex, String replacement); 普通 替换全部
03 public String replaceFirst​(String regex, String replacement); 普通 替换首个
04 public String[] split​(String regex); 普通 正则拆分
05 public String[] split​(String regex, int limit); 普通 正则指定个数拆分

下面通过一些具体范例来对正则的使用进行说明。
范例:实现字符串的替换(删除非字母与数字)

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        String str = "JILO&*()@#$UISD&*(#$HUK34rwyhui*()@#$*()@#$";  //要判断的数据
        String regex = "[^a-zA-Z0-9]+";  //正则表达式
        System.out.println(str.replaceAll(regex, ""));//JILOUISDHUK34rwyhui
    }
}
AI 代码解读

范例:实现字符串的拆分

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        String str = "a1b22c333d4444e55555f666666g";
        String regex = "\\d+";
        String result[] = str.split(regex);
        for (int x = 0 ;x < result.length ; x ++) {
            System.out.println(result[x] + "、");  //a、b、c、d、e、f、g、
        }
    }
}
AI 代码解读

在正则处理的时候对于拆分和替换的操作相对容易一些,但是比较麻烦的是数据验证的部分。
范例:判断一个数据是否为小数,如果是小数则将其变为double类型

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        String str = "100.32";    //要判断的数据
        String regex = "\\d+(\\.\\d+)?";  //正则表达式
        System.out.println(str.matches(regex));  
    }
}
AI 代码解读

范例:判断一个字符串是否由日期所组成,如果是由日期所组成则将其转为Date类型

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        String str = "1981-10-15 ";    //要判断的数据
        String regex = "\\d{4}-\\d{2}-\\d{2}";   //正则表达式
        if (str.matches(regex)) {
            System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str));
        } 
    }
}
AI 代码解读

需要注意的是,正则表达式无法对里面的内容进行判断,只能够对格式进行判断处理。
范例:判断给定的号码是否正确

  • 电话号码:51283346、\\d{7,8};
  • 电话号码:01051283346、(\\d{3,4})?\\d{7,8};
  • 电话号码:(010)-51283346、((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8};
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        String strA = "51283346";
        String strB = "01051283346";
        String strC = "(010)-51283346";
        String regex = "((\\d{3,4})|(\\(\\d{3,4}\\)-))?\\d{7,8}";//正则表达式
        System.out.println(strA.matches(regex));
        System.out.println(strB.matches(regex));
        System.out.println(strC.matches(regex));  //true
    }
}
AI 代码解读

既然已经可以使用正则进行验证了,那么下面就可以利用其来实现一个email地址格式的验证。
范例:验证email格式

  • email的用户名可以由字母、数字、_所组成(不应该使用“_”开头);
  • email的域名可以由字母、数字、_、-所组成;
  • email的域名后缀必须是:.cn、.com、.net、.com.cn、.gov;

image.png
邮箱正则分析

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        String str="mldnjava888@mldn.cn";
        String regex="[a-zA-Z0-9]\\w+@\\w+\\.(cn|com|net|com\\.cn|gov)";
        System.out.println(str.matches(regex));
    }
}
AI 代码解读

 以上这几种匹配处理操作是最常用的几种处理形式。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:借助regex包完成正则高级操作 | 带你学《Java语言高级特性》之二十六
更多Java面向对象编程文章查看此处

相关文章
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
82 2
|
2月前
|
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
147 83
Java 中的 String Pool 简介
本文介绍了 Java 中 String 对象及其存储机制 String Pool 的基本概念,包括字符串引用、构造方法中的内存分配、字符串文字与对象的区别、手工引用、垃圾清理、性能优化,以及 Java 9 中的压缩字符串特性。文章详细解析了 String 对象的初始化、内存使用及优化方法,帮助开发者更好地理解和使用 Java 中的字符串。
Java 中的 String Pool 简介
java 为什么 String 在 java 中是不可变的?
本文探讨了Java中String为何设计为不可变类型,从字符串池的高效利用、哈希码缓存、支持其他对象的安全使用、增强安全性以及线程安全等方面阐述了不可变性的优势。文中还通过具体代码示例解释了这些优点的实际应用。
java 为什么 String 在 java 中是不可变的?
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
130 65
|
2月前
|
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
113 60
|
2月前
|
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
61 26
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
130 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
27天前
|
Java 11 的String是如何优化存储的?
本文介绍了Java中字符串存储优化的原理和实现。通过判断字符串是否全为拉丁字符,使用`byte`代替`char`存储,以节省空间。具体实现涉及`compress`和`toBytes`方法,前者用于尝试压缩字符串,后者则按常规方式存储。代码示例展示了如何根据配置决定使用哪种存储方式。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等