java Day7 正则表达式|异常

文章目录

  • 1、正则表达式
    • 1.1 常用
    • 1.2 字符串匹配,提取,分割
  • 2、异常
    • 2.1 运行时异常
    • 2.2 编译时异常
    • 2.3 自定义异常
      • 2.3.1 自定义编译时异常
      • 2.3.2 自定义运行时异常

1、正则表达式

就是由一些特定的字符组成,完成一个特定的规则
可以用来校验数据格式是否正确。

1.1 常用

在这里插入图片描述
在这里插入图片描述

//字符类 匹配单个字符
System.out.println("a".matches("[abc]"));//true
System.out.println("a".matches("[^abc]"));//false
System.out.println("ab".matches("[abc]"));//false
System.out.println("B".matches("[a-zA-Z]"));//true
System.out.println("2".matches("[a-zA-Z]"));//false
System.out.println("b".matches("[a-z&&[^bc]]"));//false
System.out.println("z".matches("[a-z&&[^bc]]"));//true
System.out.println("z".matches("[a-z&&[^bc]]"));//true
//预定义字符 单个字符 \d \s \S \w \W
System.out.println("崔".matches("."));//t
System.out.println("崔1".matches("."));//f
System.out.println("1".matches("\\d"));//[0-9] //t
System.out.println("a".matches("\\d")); //false
System.out.println(" ".matches("\\s"));  //一个空白字符 //true
System.out.println("a".matches("\\S")); //一个非空白字符 //true
System.out.println("_".matches("\\w")); //[a-zA-Z0-9] //true
System.out.println("崔".matches("\\W")); //[^a-zA-Z0-9] //truE
//数量词 ? * + {n} {n,} {n,m}              System.out.println("a12".matches("\\w{3}"));//true               System.out.println("a1".matches("\\w{3,}"));//false
System.out.println("a12345".matches("\\w{3,5}"));//false
//其他几个常用的 () 分组  |或者 (?i) 忽略大小写
System.out.println("abC".matches("(?i)abc"));//true
System.out.println("aBC".matches("a((?i)b)c"));//false
System.out.println("123".matches("\\d{3}|[a-z]{3}"));//true
System.out.println("我爱编程666666".matches("我爱(编程)*(666)+"));//true
System.out.println("我爱编程6666666".matches("我爱(编程)*(666)+"));//false

1.2 字符串匹配,提取,分割

 //用于字符串匹配System.out.println(checkphone("16603809725"));
System.out.println(checkphone("010-12456789"));
//查找某段字符串中符合要求的 字符
String s="电话:166038069725 \n"+",010-123456789"+"姓名:崔凯悦";
String regex="(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,11})";
Pattern compile = Pattern.compile(regex);
Matcher matcher = compile.matcher(s);
while(matcher.find()){System.out.println(matcher.group());
//16603806972
//010-123456789
}
//替换,分割
String s1="翠翠翠翠asd张吱吱吱吱bgc急急急";
String s2 = s1.replaceAll("\\w+", "-"); //翠翠翠翠-张吱吱吱吱-急急急
System.out.println(s2);
String s3="我喜喜喜喜欢欢编程";
System.out.println(s3.replaceAll("(.)\\1+", "$1")); //我喜欢编程
String s4="崔凯悦123出处456姜龙翔abc";
String[] names = s4.split("\\w+");
System.out.println(Arrays.toString(names)); //[崔凯悦, 出处, 姜龙翔]

2、异常

异常就是程序出现的错误
在这里插入图片描述

2.1 运行时异常

就是只有我们在运行时才可能会发现的错误,在编译时不会提醒你。
比如:

        Integer.valueOf("abc");//运行时异常
//        Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
//        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
//        at java.base/java.lang.Integer.parseInt(Integer.java:668)
//        at java.base/java.lang.Integer.valueOf(Integer.java:999)
//        at com.cky.mathclass.main.main(main.java:5)

2.2 编译时异常

在我们写程序时就会提醒我们需要捕获该异常 或者抛出该异常

 //②抛出public static void main(String[] args) throws ParseException {
//        Integer.valueOf("abc");//编译时异常
//        Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
//        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
//        at java.base/java.lang.Integer.parseInt(Integer.java:668)
//        at java.base/java.lang.Integer.valueOf(Integer.java:999)
//        at com.cky.mathclass.main.main(main.java:5)SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date parse = null;//编译时异常  我们必须对其异常进行捕获或者声明抛出才可以//① 对其进行捕获try {parse = simpleDateFormat.parse("2000-6-11 12:15:13");} catch (ParseException e) {e.printStackTrace();}System.out.println(parse);}

2.3 自定义异常

在我们日常开发中,很多异常情况是java没有的,我们可以自己写一个异常类,注意 该类需要继承自运行时异常(runtimeException)或者编译时异常(exception)

至于到底继承哪个,要看自己,如果你觉得这个问题很严重,需要在编译时就告诉程序员,需要其进行捕获或者抛出,就继承编译时异常,否则继承运行时异常。

比如,我们需要保存一个合法的年龄。

2.3.1 自定义编译时异常

package com.cky.mathclass;
//编译时异常
public class AgeIllegailtyException1 extends  Exception{public AgeIllegailtyException1() {}public AgeIllegailtyException1(String message) {super(message);}
}
package com.cky.mathclass;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class main {//②抛出public static void main(String[] args) throws ParseException {try {SavaAge1(100);} catch (AgeIllegailtyException1 e) {e.printStackTrace();}}public static void SavaAge1 (int age) throws AgeIllegailtyException1{if (age>0&&age<150){System.out.println("年龄保存成功");}else{//throw 跑出去这个异常对象上边调用者才会接受到这个异常,否则不会报错//throws 抛出方法内部的异常 用在方法上throw new AgeIllegailtyException1("/age is illegality,age is"+age);}}
}

2.3.2 自定义运行时异常

package com.cky.mathclass;public class AgeIllegalityException extends RuntimeException{public AgeIllegalityException() {}public AgeIllegalityException(String message) {super(message);}
}
package com.cky.mathclass;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class main {//②抛出public static void main(String[] args) throws ParseException {SavaAge(150);}public static void SavaAge(int age){if (age>0&&age<150){System.out.println("年龄保存成功");}else{//throw 跑出去这个异常对象上边调用者才会接受到这个异常,否则不会报错throw  new AgeIllegalityException("/age is illegality,age is"+age);}}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AHU 汇编 实验二

一、实验名称&#xff1a;实验二 不同寻址方式的灵活运用 二、实验内容&#xff1a;定义数组a[6]&#xff0c;用多种寻址方式访问对应元素&#xff0c;实现&#xff08;a[0]a[1]&#xff09;*(a[2]-a[3])/a[4],将结果保存在内存a[5]中&#xff0c;用debug查询结果。 实验过程&a…

压缩自定义格式压缩包<2>:python使用DEFLATE 算法打包并解压成功,但是解压后的文件格式是固定后缀。

打包 import zlib import osdef compress_folder(input_folder, output_filename):"""使用 DEFLATE 算法压缩文件夹下的所有文件。Parameters:input_folder: str要压缩的文件夹路径。output_filename: str输出压缩文件名。"""# 创建一个空的字节…

GPT与R 在生态环境领域数据统计分析

原文链接&#xff1a;GPT与R 在生态环境领域数据统计分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597092&idx2&sn0a7ac5cf03d37c7b4659f870a7b71a77&chksmfa823dc3cdf5b4d5ee96a928a1b854a44aff222c82b2b7ebb7ca44b27a621edc4c824115babe&…

Linux Centos系统 磁盘分区和文件系统管理 (深入理解)

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; 前言———— 磁盘 在Linux系统中&#xff0c;磁盘是一种用于存储数据的物理设备&#xff0c;可以是传统的硬盘驱动器&am…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Progress)

进度条组件&#xff0c;用于显示内容加载或操作处理等进度。 说明&#xff1a; 该组件从API version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Progress(options: ProgressOptions<Type>) 创建进度组件&a…

【好书推荐-第十一期】《Java面试八股文:高频面试题与求职攻略一本通(视频解说版)》(博文视点出品)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公众号&#xff1a;洲与AI。 &#x1f388; 本文专栏&#xff1a;本文收录…

ARM/Linux嵌入式面试专栏前言

Perface 实在是没有想到也会准备面试&#xff0c;毕业的时候想着找一个大厂&#xff0c;好好的一辈子都干下去。 如果把工作比作对象&#xff0c;那我年轻的时候曾认真对她许诺&#xff1a; 你若不离&#xff0c;我定不弃 然而我们最后也不是谁变了心&#xff0c;只是经历了…

二,几何相交---4,BO算法---(2)比较和排序

在某一时刻xt&#xff0c;扫描线从左到右时&#xff0c;一部分线段会与扫描线相交&#xff0c;此时此刻&#xff0c;线段可以分成高低顺序&#xff0c; 那么对于给定两条线段&#xff0c;是如何变化的呢&#xff1f;有两个端点&#xff0c;左端点和右端点&#xff0c; 三种情况…

追寻工作与生活的和谐之道

在现代社会&#xff0c;人们往往被快节奏的工作和生活所困扰&#xff0c;如何在这两者之间找到平衡点&#xff0c;成为许多人关注的焦点。本文将为您介绍一些实用的方法和建议&#xff0c;帮助您实现工作与生活的和谐共处。 一、合理规划时间&#xff0c;提高工作效率 时间是实…

嵌入式学习 Day 31

网络: 数据传输,数据共享 1.网络协议模型: OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式&#xff08;数据报、流式&#xff0…

2024年,人工智能技术在各个领域的应用

2024年&#xff0c;人工智能技术在各个领域的应用愈发普遍&#xff0c;其中之一就是AI在研发领域的辅助应用。随着AI技术不断进步和普及&#xff0c;越来越多的研发团队开始利用AI来加快创新和提高效率。以下是关于2024年AI辅助研发趋势的文章。 在2024年&#xff0c;AI在研发…

WorkPlus Meet提供高效、安全视频会议解决方案

WorkPlus Meet是一款私有部署和定制化的视频会议解决方案&#xff0c;为企业提供高效、安全的远程协作平台。随着全球数字化转型的加速&#xff0c;视频会议已成为企业必不可少的工作工具&#xff0c;而WorkPlus Meet的私有部署和定制化功能&#xff0c;为企业提供了更大的控制…

什么叫聊天中信息传达的框架效应framing effect,或展望理论Prospect theory

什么叫聊天中信息传达的框架效应&#xff0c;或展望理论 设计不能为产品带来良好体验&#xff1f;可能是你不懂心理学 框架效应- 维基百科&#xff0c;自由的百科全书 框架(社会科学)-展望理论 - 经济百科 jingjibaike 3 Answer 框架效应The theory of framing effects…

【MySQL系列 05】Schema 与数据类型优化

良好的数据库 schema 设计和合理的数据类型选择是 SQL 获得高性能的基石。 一、选择优化的数据类型 MySQL 支持的数据类型非常多&#xff0c;选择正确的数据类型对于获得高性能至关重要。不管存储哪种类型的数据&#xff0c;下面几个简单的原则都有助于做出更好的选择。 1. …

并发容器介绍(一)

并发容器介绍&#xff08;一&#xff09; 文章目录 并发容器介绍&#xff08;一&#xff09;ConcurrentHashMapCopyOnWriteArrayListConcurrentLinkedQueue 文章来自Java Guide 用于学习如有侵权&#xff0c;立即删除 ConcurrentHashMap 我们知道 HashMap 不是线程安全的&…

C语言学习-day19-函数2

自定义函数&#xff1a;自己定义的函数 以strcpy为例子&#xff1a; 自定义函数一样&#xff0c;需要函数名&#xff0c;返回值类型&#xff0c;函数参数。 函数的组成&#xff1a; ret_type fun_name(para1, *) { statement;//语句项 } ret_type 返回类型 fun_name 函数…

weiphp5.0存在远程代码执行漏洞

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. weiphp5.0简介 微信公众号搜索:南风漏洞复…

通过pidin观察线程信息

通过pidin观察线程信息 pidin在qnx里是一个非常有用的命令&#xff0c;该命令提供了多个选项来获取关于进程的详细信息&#xff0c;包括进程ID&#xff08;PID&#xff09;、进程状态、CPU使用情况、内存使用情况、线程信息等。 pidin通过threads参数可以观察进程ID&#xff…

在并发场景如何正确的使用锁机制呢?

Java提供了多种锁机制来保证线程安全&#xff0c;包括synchronized关键字、Lock接口、ReadWriteLock接口等等。在日常并发场景中&#xff0c;正确使用锁机制是非常重要的&#xff0c;因为不恰当的锁使用会导致死锁、饥饿等问题&#xff0c;影响程序的性能和可靠性。 首先&…

c++ 开发环境 LNK1104: 无法打开文件“carve.lib” 已解决

别人分享&#xff0c; 和自己最近遇到问题一摸一样。以为没什么用的静态资源&#xff0c;结果 无法编译。 昨天安装配置了&#xff0c;结果今天早上打开电脑&#xff0c;所以dll的工程全部报错&#xff1a; 1>------ 已启动全部重新生成: 项目: Dll_test, 配置: Debug x64…