JavaSe-字符串与正则

String类

字符串的拼接

字符串直接拼接产生大量对象,产生不必要消耗

一般使用StringBuilder

String a="hello world";
String b="world hello!";
String c=a+b;
// StringBuilder

字符串转数组

// 将字符串变成char型数组
word.toCharArray();
// 指定字符分割成String数组
word.split(" ");

字符串插值

insert在索引前面添加字符串

StringBuffer stringBuilder1=new StringBuffer("20180918");
stringBuilder1.insert(6,"-");
stringBuilder1.insert(4,"-");

字符串追加

StringBuffer stringBuilder1=new StringBuffer("20180918");
stringBuilder1.append("aa")
    .append("bb")
    .append("cc");

除去字符串的空白字符

// 除去字符串的空白字符
word.trim();
// 移除末尾空白符(可以移除中文空格)
word.strip();
// 移除开始空白符
word.stripLeading();
// 移除末尾空白符(非中文空白符)
word.stripTrailing();

获取字符串长度

word.length();

字符串比较

String str1 = "Hello World";
String str2 = "Hello World";
//因为字符串实现了compare接口,所以能比较对象
str1.compareTo(str2)
//忽略大小写
str1.compareToIgnoreCase(str3)

字符串查找

// 返回索引的char
word.charAt(0);
// 查找第一次出现的索引
str1.indexOf("o");
// 查找字符串最后一次出现的索引
str1.lastIndexOf("o");
// 从指定位置起查找
str1.indexOf("o",3);
str1.lastIndexOf("e",15);
// 查找第2次出现的索引
str1.indexOf("o",str1.indexOf("o",3));// n次嵌套
// 查找两索引间的字符串(左闭又开)
str1.substring(0, 5);
// 查找从某位置到末尾的字符串
str1.substring(6);

字符串匹配

// 是否以字符串开头
word.startsWith("hel");
// 是否以字符串结尾
word.endsWith("ld!");
// 在第二个参数指定位置开始字符串是否以第一个参数开始
word.startsWith("llo",2);

字符串比较

// 比较相等
word.equals("hello world!"); // 考虑大小写
word.equalsIgnoreCase("hello world!"); // 忽略
word.toUpperCase().equals("hEllO wOrld!".toUpperCase())
// 比较大小
str1.compareTo(str2);

字符串替换

str1.replace("o", "h");
str1.replaceAll("o", "h");// 替换全部
str1.replaceFirst("o", "h");// 替换出现的第一个

字符串反转

new StringBuffer(str1).reverse()

字符串分割

String [] temp = str1.split("\\ ");

字符串大小写

str1.toUpperCase();
str1.toLowerCase();

字符串删除

new StringBuffer delete(int start,int end);

字符串和其它数据类型的转换

基本数据类型和字符串的转换

int a=1;  a+"";
String b=String.valueOf(a);

格式化

格式化匹配表

image-20210316165759326

正则

正则应用方法

匹配

boolean matchs(正则表达式):判断当前字符串是否匹配某个正则表达式

替换

String replace(xx,xx):不支持正则

String replaceFirst(正则,value):替换第一个匹配部分

String repalceAll(正则, value):替换所有匹配部分

拆分

String[] split(正则):按照某种规则进行拆分

常用正则表达式:

符类

[abc]abc(简单类)

[^abc]:任何字符,除了 abc(否定)

[a-zA-Z]azAZ,两头的字母包括在内(范围)

预定义字符类

.:任何字符(与行结束符可能匹配也可能不匹配)

\d:数字:[0-9]

\D:非数字: [^0-9]

\s:空白字符:[ \t\n\x0B\f\r]

\S:非空白字符:[^\s]

\w:单词字符:[a-zA-Z_0-9]

\W:非单词字符:[^\w]

POSIX 字符类(仅 US-ASCII)

\p{Lower}小写字母字符:[a-z]

\p{Upper}大写字母字符:[A-Z]

\p{ASCII}所有 ASCII:[\x00-\x7F]

\p{Alpha}字母字符:[\p{Lower}\p{Upper}]

\p{Digit} 十进制数字:[0-9]

\p{Alnum}字母数字字符:[\p{Alpha}\p{Digit}]

\p{Punct} 标点符号:!"#$%&’()*+,-./:;<=>?@[]^_`{|}~

\p{Blank} 空格或制表符:[ \t]

边界匹配器

^:行的开头

$:行的结尾

Greedy 数量词

X?X,一次或一次也没有

X*X,零次或多次

X+X,一次或多次

X{n}X,恰好 n

X{n,}X,至少 n

X{n,m}X,至少 n 次,但是不超过 m

Logical 运算符

XYX 后跟 Y

X|YXY

(X):X,作为捕获组

特殊构造(非捕获)

(?:X) X,作为非捕获组

(?=X) X,通过零宽度的正 lookahead

(?!X) X,通过零宽度的负 lookahead

(?<=X) X,通过零宽度的正 lookbehind

(?<!X) X,通过零宽度的负 lookbehind

(?>X) X,作为独立的非捕获组

常见应用

1.验证用户名和密码,要求第一个字必须为字母,一共6~16位字母数字下划线组成:1\w{5,15}$)

2.验证电话号码:xxx/xxxx-xxxxxxx/xxxxxxxx:(^(\d{3,4}-)\d{7,8}$)

3.验证手机号码:( ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ )

4.验证身份证号: (\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x)$)

5.验证Email地址:(^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$)

6.只能输入由数字和26个英文字母组成的字符串:(2+$)

7.整数或者小数:(3+(.[0-9]+){0,1}$)

8.中文字符的正则表达式:([\u4e00-\u9fa5])

9.金额校验(非零开头的最多带两位小数的数字):(^([1-9][0-9]*)+(.[0-9]{1,2})?$)

10.IPV4地址:(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))


  1. a-zA-Z ↩︎

  2. A-Za-z0-9 ↩︎

  3. 0-9 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值