-
StringBuffer类
由于String类是由final修饰,每次更改一个字符串。都将消耗内存产生一个新的字符串对象。因此java提供了一个可变字符串。它就是StringBuffer,用来更改频繁的操作字符串。
StringBuffer类的特性:
(1)底层是可变序列
(2)线程安全,但是效率慢
StringBuffer类常用API
(1)构造方法StringBuffer():构造一个没有字符串的缓冲区,初始容量为16个字符。
(2)构造方法StringBuffer():构造一个初始化为指定字符串内容的字符缓冲区
(3)普通方法append(String str):将参数str的字符串表示附加在序列中。
StringBuffer buffer = new StringBuffer();
buffer = buffer.append(“我是张三”);
buffer.append(",年龄是18");
System.out.println(buffer);//我是张三,年龄是18
StringBuffer Ebuffer = new StringBuffer(“aaa”);
Ebuffer.append(“bbb”).append(“ccc”);
System.out.println(Ebuffer);//aaabbbccc
(4)StringBuffer delete(int start, int end)
:delete表示删除某一区间的内容
区间[start,end)下表从零开始哦!
StringBuffer buffer = new StringBuffer(“你好”);
buffer.append(“我很喜欢学习java”).delete(0, 2);
System.out.println(buffer.toString());//我很喜欢学习
(5)
StringBuffer insert(int offset, String str)
:将字符串插入到此字符序列中。
StringBuffer buffer = new StringBuffer();
buffer.append(“我很喜欢学习java”).insert(1, “真的”);
System.out.println(buffer.toString());//我真的很喜欢java
下表从0开始从1的位置开始插入(原本1位置上的字符后移)
(6)StringBuffer reverse()
:该字符序列被序列的相反代替。
(7)String substring()
:截取字符串。 -
正则表达式及其应用
(1)表达式介绍
[ ]:任意一个字符——[abc]匹配的是abc中的任意一个字符
[^]:任意一个非 的字符——[^abc]匹配的是非abc中的任意一个(不是abc中的任意一个字符)
[0-9]:匹配任意一个0-9中的数字
[a-z]:匹配任意一个a-z中的小写字符
[A-Z]:匹配任意一个A-Z中的大写字符
[0-9a-zA-Z]:匹配任意一个0-9或a-z或A-Z中任意一个字符
[a-z&&[^ab]]:匹配a-z中的任意一个,ab除外(除ab外的任意一个)。
[\u4e00-\u9fa5]:任意一个中文字符
\d:任意一个数字字符
\w:任意一个单词字符
\s:任意一个空白字符
\D:任意一个非数字字符
\W:任意一个单词字符==[^0-9a-zA-z]
\S:任意一个非空白字符
数量的符号:
*:前一项出现0次以上
+:前一项出现1次以上
?:前一项出现0次或1次
{m}:前一项出现m次
{m,n}:前一项出现m到n次
{m,}:前一项至少出现m次
字符串对正则的支持方法:
boolean matches(String regex) :告诉这个字符串是否匹配给定的 regular expression 。
String[] split(String regex) :将此字符串分割为给定的 regular expression的匹配。
String replaceAll(String regex, String replacement) :用给定的替换与给定的regular expression匹配的此字符串的每个子字符串。分组符号
():将某一个看出一项,当成一组来判断次数
小括号内可以使用|进行选择():分组 86+ (86)+ |:或 13|15|16
注:有些特殊字符在正则表达式中有特殊含义,如果我们想要注:保持该字符原有的含义则需要转移,转移使用""
(2)正则表达式的应用
String reg = “[abc]”;
String str = “a”;
boolean b = str.matches(reg);
System.out.println(b);//true
String reg = “[^abc]”;
String str = “1”;
boolean b = str.matches(reg);
System.out.println(b);\true
String reg = “[0-9]”;
String str = “8”;
boolean b = str.matches(reg);
System.out.println(b);\true
//中文的正则表达式 [\u4e00-\u9fa5]
String reg = “[0-9a-zA-Z]”;
String str = “中”;
boolean b = str.matches(reg);
System.out.println(b);//false
邮编的验证方式
6位数字
1)[0-9][0-9][0-9][0-9][0-9][0-9]
2)[0-9]{6}
public class RegExpDemo2 {
public static void main(String[] args) {
/*String reg = "[0-9]{6}";*/
String reg = "\\d{6}";
System.out.println("请输入邮编格式:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
boolean b = str.matches(reg);
if (b){
System.out.println("邮编格式正确");
}else {
System.out.println("邮编格式错误");
}
}
}
/**
- 电话号码
- +86 – 可有可无
- +86后面可以有0个或多个空白字符
- 13,14,15,17,18
- 9个数字
- @author WIN
*/
public class RegExpDemo4 {
public static void main(String[] args) {
String reg = "(\\+86)?[0-9]{11}";
String phone = "+8615543006648"; //"15543006648";
System.out.println(phone.matches(reg));
}
}