正则表达式、Math类、StringBuffer类和StringBuilder类
2016-04-11 22:17
603 查看
一、Java中的正则表达式
1.正则表达式就是记录文本规则的代码。用于进行文本匹配的工具,也是一个匹配的表达式。
先上一个小例子: 根据给定正则表达式的匹配拆分此字符串,得到拆分好的字符串数组。
public class RegexTest{ public static void main(String[] args){ String str = "dong,shuai,may,the,force,be,with,you"; String[] str2 = str.split(",");//按照“,”对str拆分,得到str2数组 for(int i = 0; i < str2.length; i++){ System.out.println(str2[i]); } } }
注意:
如果用“.”或”|”做分隔符,必须写成str.split(“\.”),因为“.”和”|”都是转义字符,必须加“\”。
2.下面是正则表达式的一些元字符:
\b 代表单词的开头或结尾,也就是单词的分界处。\d匹配数字,a\d{3}表示连续重复匹配3次a。
\s 匹配任意的空白符。
^匹配字符串的开始。
$ 匹配字符串的结束。
3.如果要重复匹配,则有下面几种方式
* 重复0次或多次。 + 重复一次或多次。 ? 重复0次或一次。 {n} 重复n次。 {n,} 重复n次或更多次 {n,m}重复n次到m次
4.匹配几个字符放在中括号里
[a,e,i,o,u]表示匹配英文任何一个元音字符。 [.?!]表示匹配标点符号, . 或?或! [0-9]相当于\d
5.在java中有专门进行正则表达式的类,在java.util.regex包里面。
java.util.regex.Pattern类java.util.regex.Matcher类
下面是一个匹配电话号码的例子:
/** * 正则表达式 */ import java.util.regex.*; public class RegexTest{ public static void main(String[] args){ String str = "010-644659153"; Pattern p = Pattern.compile("0\\d{2}-\\d{8}");//编译正则表达式字符串到pattern对象用以匹配的快速处理 Matcher m = p.matcher(str); boolean flag = m.matches();//返回输入是否与模式匹配 System.out.println("Your input is:" + flag); } }
注意:由于java里“\”需要转义,应该变成“\”。
6.常见正则表达式:
(1)检查是否email地址
^([\\w-\\.]+)@((\\[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$
(2).判断输入的字符串只包含汉字
^[\u4e00-\u9fa5]+$
(3).匹配3位或4位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字符或空格间隔,也可以没有间隔
^\\(0\\d{2}\\)[- ]?\\d{8}$|^0\\d{2}[- ]?\\d{8}$|^\\(0\\d{3}\\)[- ]?\\d{7}$|^0\\d{3}[- ]?\\d{7}$
(4).判断输入的字符串是否是一个合法的手机号,以1开头。
^1\\d{10}$
(5)判断输入的字符串只包含数字,可以匹配整数和浮点数
^-?\\d+$|^(-?\\d+)(\\.\\d)?$
(6)匹配非负整数
^\\d+$
(7)判断输入的字符串只包含英文字母
^[A-Za-z]+$
(8)判断输入的字符串只包含数字和英文字母
^[A-Za-z0-9]+$
7.String类中正则表达式的用法
例子:public class UseRegex{ public static void main(String[] args){ String str = "dongshuai"; String regStr = "ong"; str = str.replaceAll(regStr,"ONG");//用"ONG"替换所有str字符串中的regStr System.out.println("str = " + str); String str1 = "dong,shuai,dongshuai,gnod,iauhs,iauhsgnod"; str1 = str1.replaceFirst(regStr,"ONG");//用"ONG"替换str字符串中的第一个regStr System.out.println(str1); String[] str2 = str1.split(",");//用“,”拆分此字符串 for(int i = 0; i < str2.length; i++){ System.out.println("str2[" + i + "] ==" + str2[i]); } String[] str3 = str1.split(",",3);//用“,”拆分此字符串,拆分后数组的length为3 for(int i = 0; i < str3.length; i++){ System.out.println("str3[" + i + "] == " + str3[i]); } } }
二、Math类
Java中的数学(Math)类是final类,不可继承示例如下:
/** * Java中的数学(Math)类是final类,不可继承 * 包括一组静态方法和两个常数。 */ //import java.util.Math; public class MathTest{ public static void main(String[] args){ System.out.println(Math.PI); System.out.println(Math.E); double d = 100.001; double d1 = 10.001; double i = Math.ceil(d);//不小于d的最小整数 double i1 = Math.floor(d);//b不大于d的最大整数 double i2 = Math.round(d);//四舍五入 double i3 = Math.abs(d);//绝对值 double i4 = Math.min(d,d1);//两数中的小的数 double i5 = Math.max(d,d1);//两数中的大的数 double i6 = Math.log(d);//自然对数 double i7 = Math.exp(d);//e的指数 double i8 = Math.sqrt(d);//开平方 double i9 = Math.random() * d;//随机数 System.out.println(i); System.out.println(i1); System.out.println(i2); System.out.println(i3); System.out.println(i4); System.out.println(i5); System.out.println(i6); System.out.println(i7); System.out.println(i8); System.out.println(i9); } }
三、StringBuffer和StringBuilder类
String类一旦创建对象,其内容不能修改 StringBuffer和StringBuilder创建的对象的内容可以修改。 StringBuffer适合多进程,安全。 StringBuilder适合单进程,运行快。
示例如下:
/** * String生成的对象一旦创建,内容不能再被修改 * StringBuffer和StringBuilder类,对象的内容是可以被修改的 */ public class StringBufferTest{ public static void main(String[] args){ StringBuffer buffer = new StringBuffer(); buffer.append("d");//添加数值到StringBuffer对象中 buffer.append("d"); buffer.append("d"); buffer.append("d"); buffer.append("d"); buffer.append("d"); System.out.println(buffer.toString()); StringBuilder builder = new StringBuilder(); builder.append("s"); builder.append("s"); builder.append("s"); builder.append("s"); builder.append("s"); builder.append("s"); builder.append("s"); System.out.println(builder.toString()); } }
相关文章推荐
- 简述UIActivityIndicatorView的属性和用法
- 方法调用与带标签的continue和break
- uisegmentedcontrol自定
- JSP调试遇到“the requested resource is not available”
- hdu 1242 Rescue(bfs)
- 从设计心理学理解交互设计的原则
- Java核心知识点-String、StringBuilder和StringBuffer的特点
- CSU-1715 Positive Con Sequences(模拟分四种情况 )From湖南省多校对抗赛E题(2016.03.27)
- 搭建轻量级git server和git web UI
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
- activiti自定义流程之整合(二):使用angular js整合ueditor创建表单
- 山东省第四届ACM大学生程序设计竞赛 Mountain Subsequences dp
- EqualsBuilder和HashCodeBuilder
- 入门QT4+VS2008-Gui设计
- IOS开发-UI学习-UITabBarController的使用
- 算法课笔记系列(0)——Prologue and Notation
- String、StringBuffer与StringBuilder之间区别
- StringBuffer与StringBuilder的区别
- UIScrollView subviews多了两个UIImageView
- Gensim and LDA: a quick tour