字符串操作和正则表达式

来源:互联网 发布:mysql union all sum 编辑:程序博客网 时间:2024/06/05 00:33

一:字符串基本操作

String s1="ac"; //不创建对立对象的新建方式
byte bys[]=new byte[]{'e','y','l'};
String s2=new String(bys,0,bys.length); //通过数组新建对象
System.out.println(s1+s2);

String s1="abcdefghijklm ";
System.out.println(s1.indexOf('c'));//字符串查找
System.out.println(s1.charAt(5)); //指定位置的字符
System.out.println(s1.substring(6));//从指定位置截取
System.out.println(s1.compareToIgnoreCase("o")); //字符串比较
System.out.println(s1.trim()); //字符串去空格
System.out.println(s1.concat("mq")); //字符串连接

String s1="abcdefghijklm ";
System.out.println(s1.replace("e", "ll")); //字符串替换操作
System.out.println(s1.endsWith("l")); //判断结尾
System.out.println(s1.equals("kklslsk")); //判断是否相等
int a=s1.compareTo("ll");
System.out.println(a); //比较字符串的大小,Unicode
System.out.println(s1.toUpperCase());

二:字符串的格式化

Date d1=new Date();
String s1=String.format("%te", d1); //这个月几号?
System.out.println(s1);
String s2=String.format("%tY",d1); //今年是哪一年
System.out.println(s2);
System.out.println(String.format("%tQ", d1)); //绝对毫秒数

三:正则表达式

常用的正则表达式字符 
①字符
\\                   反斜线字符 
\0n                 带有八进制值 0 的字符 n (0 <= n <= 7) 
\0nn               带有八进制值 0 的字符 nn (0 <= n <= 7) 
\0mnn            带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) 
\xhh                带有十六进制值 0x 的字符 hh 
\uhhhh           带有十六进制值 0x 的字符 hhhh 
\t                制表符 ('\u0009') 
\n               新行(换行)符 ('\u000A') 
\r                回车符 ('\u000D') 
\f                换页符 ('\u000C') 
\a               报警 (bell) 符 ('\u0007') 
\e               转义符 ('\u001B') 
\cx             对应于 x 的控制符 


②:字符类[abc]ab 或 c(简单类)[^abc]任何字符,除了 ab 或 c(否定)[a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围)[a-d[m-p]]a 到 d 或 m 到 p[a-dm-p](并集)[a-z&&[def]]de 或 f(交集)[a-z&&[^bc]]a 到 z,除了 b 和 c[ad-z](减去)[a-z&&[^m-p]]a 到 z,而非 m 到 p[a-lq-z](减去)
③: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{Graph}可见字符:[\p{Alnum}\p{Punct}]\p{Print}可打印字符:[\p{Graph}\x20]\p{Blank}空格或制表符:[ \t]\p{Cntrl}控制字符:[\x00-\x1F\x7F]\p{XDigit}十六进制数字:[0-9a-fA-F]\p{Space}空白字符:[ \t\n\x0B\f\r]④:Greedy 数量词X?X,一次或一次也没有X*X,零次或多次X+X,一次或多次X{n}X,恰好 n 次X{n,}X,至少 n 次X{n,m}X,至少 n 次,但是不超过 m 次⑤:使用方法
正规使用方法

Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("33443");
System.out.println( m.matches());

简写方法

String s2="woshibaokaiaaaa@qq.com";
boolean b1= s2.matches("\\w+@\\w+.[a-z]+");
System.out.println(b1);

应用方法

String str="我是一个喜欢游泳,喜欢:唱歌,喜欢运动.喜欢看书的人";
Pattern p=Pattern.compile("\\p{Punct}"); //使用Pattern类定义一个新的模板
String[] s2=p.split(str);
for (String string : s2) {
System.out.println(string+"*");
}

举例

1,验证电话号码 010-53517230

Scanner sa=new Scanner(System.in);
System.out.println("请输入电话号码");
String ex=sa.nextLine();
if(ex.matches("\\d{3,4}-\\d{7,8}")){
System.out.println("符合");
}
else {
System.out.println("不符合");
}
sa.close();

2,验证手机号码

System.out.println("请输入手机号码");
String phone=sa.nextLine();
boolean flag=phone.matches("1[3-8]\\d{9}");
if (flag){
System.out.println("格式匹配");
}else {
System.out.println("格式不匹配");
}

3、验证用户名,只能以字母开头,字母或者下划线的组合

String username=sa.nextLine();
if(username.matches("[a-zA-Z]+[\\w|_]+")){
System.out.println("匹配");
}else{
System.out.println("不匹配");
}


0 0
原创粉丝点击