您的位置:首页 > 产品设计 > UI/UE

正则表达式、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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: