项目中常用类总结(正则表达式、模式匹配、格式化输出、String类、StringBuffer类)

479 阅读5分钟

今天我们来聊聊正则表达式和模式匹配问题,这个知识点正是我们平常做项目常用的知识点,希望小伙伴们一定要熟练掌握。

正则表达式(Regular Expression)本身也是一个字符串,是由普通字 符及元字符组成的模式字符串,它用来定义别的字符串的组成规则。

• String类中的boolean matches(String regex)方法可用来判断当前字符 串是否和参数regex指定的正则表达式匹配。

1、正则表达式规则

• 元字符: (1) .匹配任意单个字符 【示例】 验证用户名是否是’b’开头, ’e’结尾,长度为4的字符串。 (2) []用来给出取值集合,匹配其中某一个字符 【示例】te[sx]t (3) 在[]中使用-表示范围,如 [0-9] [A-Za-z0-9]等 【示例】s[6-9] s[a-g] (4) ()用来界定子表达式,匹配其中的有序序列 (5) 元字符|表示或的关系 【示例】b(lue|lack|rown) (6) 元字符{n}表示前面的元素的重复n次;{2,5}表示前面的元素重复2到5次; {3,}表示至少重复3次。 【示例】 .{1,}(lue|lack|rown) (7) 对于重复次数的限制,还可使用下列特殊元字符: * 表示前面的元素重复0次或多次 ? 表示前面的元素重复0次或1次 + 表示前面的元素重复1次或多次 (8) 转义字符* 【示例】 .\.(com|cn|org) (9)元字符^和$

^代表字符串开始,代表字符串结束**
**(10) 在[]中使用^表示非**
比如:模式字符串是‘B[^lmn]’
,则表示B后跟的字符不能是l,m,n三者之一。
**(11) 其它简洁符号**
\d == [0-9] \D == [^0-9]
\w == 字母数字下划线 \W == 非字母数字下划线
\s ==所有的空白字符 \S==非空白字符
• 总结:
**句点.表示任意单个字符
方括号[]表示集合里的单个字符
括号()表示子表达式,里面可包含多个字符串,使用|表示或关系
大括号{}表示前一个元素的重复次数
转义字符\
中括号中的^符号表示“否”
,中括号外的^表示字符串开始表示字符串结束 \d \D \w \W \s \S等简洁符号

在这里插入图片描述
![在这里插入图片描述](img-blog.csdnimg.cn/20200227192… 0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTg2ODQw,size_16,color_FFFFFF,t_70)

2、正则表达式的使用之处

需求题: 匹配IP地址 作业: 写一个方法,输入一个IP地址,返回 这个IP地址的属于哪一类IP地址(A B C D E),或者返回“非IP地址”的结果 A类地址:以0开头的8位网络地址+ 24位主机地址,网络地址取值范围0~127 B类地址:以10开头的16位网络地址 +16位主机地址,网络地址取值范围128.0.~191.255. C类地址:以110开头的24位网络地址 +8位主机地址,网络地址取值范围192.0.0.* -- 223.255.255.* D类地址:以1110开头的IP地址,称为多播地址/组播地址,该IP地址用于多点广播,不区分网络地址和主机地址,每个D类地址代表一组主机。 取值范围:224.0.0.0--239.255.255.255 E类地址:以1111开头的IP地址,保留用于研究。 取值范围:240.0.0.0--255.255.255.255 127.0.0.1被称为本地回环地址,该地址代表本机。


import javax.swing.JOptionPane;

public class TestZhengZe {
	public static void main(String[] args) {
		view();
	}

	private static void view() {
		while (true) {
			String s = "请输入您要匹配的Ip地址";
			String input = JOptionPane.showInputDialog(s);
			String info = "";
			// 过滤非法输入
			if (input == null || input.equals("")) {
				JOptionPane.showMessageDialog(null, "您输入的IP地址为空,请重新输入!", "错误", JOptionPane.ERROR_MESSAGE);
				continue;
			}
			if (input.matches("127.0.0.1")) {
				info = "您输入的Ip地址为主机地址!";
			}else if (input.matches("(12[0-7]|1[0-1]\\d|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
				info = "您输入的Ip地址为A类地址!";
			} else if (input.matches("(12[8-9]|1[3-8]\\d|19[0,1]|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
				info = "您输入的Ip地址为B类地址!";
			} else if (input.matches("(19[2-9]|2[0-1]\\d|22[0-3]|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
				info = "您输入的Ip地址为C类地址!";
			} else if (input.matches("(22[4-9]|23[0-9]|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
				info = "您输入的Ip地址为D类地址!";
			} else if (input.matches("(24[0-9]|25[0-5]|(([1-9]?\\d)))\\.((25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))\\.){2}(25[0-5]|2[0-4]\\d|((1\\d{2})|([1-9]?\\d)))")) {
				info = "您输入的Ip地址为E类地址!";
			}else {
				JOptionPane.showMessageDialog(null, "请正确输入IP地址格式代号!", "错误", JOptionPane.ERROR_MESSAGE);
				break;
			}
			JOptionPane.showMessageDialog(null,info);
		}
	}
}

结果展示

在这里插入图片描述

3、模式匹配

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

4、模式匹配寻找子串

示例代码:

在这里插入图片描述

5、格式化输出

f 格式:输出浮点数。有以下几种用法: %f:不指定宽度,整数部分全部输出并输出6位小数。 %m.nf:输出共占m列(包含符号位和小数点),其中有n位小数,如数 值宽度小于m左端补空格。 %-m.nf:输出共占m列,其中有n位小数,如数值宽度小于m右端补空 格。 • e格式:以指数形式输出浮点数。可用以下形式: %e:规范化后的数值输出6位小数。 %m.ne和%-m.ne:m、n和”-”字符含义与前相同。
在这里插入图片描述
示例代码:
在这里插入图片描述
常用方法:
在这里插入图片描述
四舍五入并保留两位小数

示例代码:

String l = String.format("%.2f",(Math.PI*2*r));

自己写算法实现格式化四舍五入并保留两位小数:

package com.yueqian.mySwing;

import java.text.DecimalFormat;

public class GeShiHua {
	public static double format(double num) {
		 num = (int)(num * 100+0.5)/100.0;
		 return num;
	}
	public static void main(String[] args) {
		double d1 = 23.4345;
		double d2 = 23.4354;
		System.out.println(format(d1));
		System.out.println(format(d2));
	}
}

6、String常用方法

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

7、StringBuffer常用方法

在这里插入图片描述
在这里插入图片描述
注意:在以后做项目过程中当使用+字符串连接器时,将字符串连接器换成StringBuffer.append()方法,其实字符串连接器源码中就采用了append方法。


好了,今天的内容就分享这么多了。期待明天的精彩展现吧!