之前做过对字符切割等操作,现在也忘了差不多(忘了做笔记),所有再回头总结下。
Matcher(英文解释:匹配器)
常用方法:(我也只写了个别的案例用法)
find():尝试查找与该模式匹配的输入序列的的下一个子序列。
find(int start):重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
group():匹配成功返回的组
start():返回先前匹配的起始位置的索引。
end():返回最后匹配字符的索引加一。
matches():尝试将整个区域与模式匹配。匹配成功返回true
lookingAt():尝试将从区域开头开始的输入序列与该模式匹配。
replaceFirst():替换掉匹配的第一个子序列
replaceAll():替换掉匹配的全部子序列
appendReplacement:重要,下面重点说
appendTail(StringBuffer buf):重要,下面重点说
1、matches 用于字符串的验证
String str = "1234";
String regex = "\\d{4}";// 4个数字
System.out.println(str.matches(regex));
2、replaceAll 替换字符串
String str = "12a34A56DFG78";
String regex = "[a-zA-Z]+";//大小写字母 加号应是省略中间输出
System.out.println(str.replaceAll(regex,"-"));
3、split 字符串切割成数组
String str = "124A456A789";
String regex = "A";
String[] arr = str.split(regex);
for(String s:arr){ System.out.println(s);}
4、获取字符串 里对应类型进行合并
String input="12e34aa56g78";
StringBuilder numberStr=new StringBuilder();//创建
Matcher m=Pattern.compile("\\d+").matcher(input);
while(m.find()){//while 先判断 是成立 再输出里面的数据 find()尝试查找与该模式匹配的输入序列的的下一个子序列。
numberStr.append(m.group()+"/");
}
System.out.println("合并值:"+numberStr.toString());
其他
substring 函数
String strx="我是一名医生,在xxx工作。";
String jiequ=strx.substring(strx.indexOf("是"), strx.indexOf("工"));//indexOf()指定的字符串值在字符串中首次出现的位置
String jiequ2=strx.substring(5);//重索引5开始进行截取
String jiequ3=strx.substring(0, 7);//截取索引从0 到 7 区间值
System.out.println("jiequ:"+jiequ);
System.out.println("jiequ2:"+jiequ2);
System.out.println("jiequ3:"+jiequ3);
判断字符串是否包含某值 contains
String str = "我你他\"";
boolean status = str.contains("他");//主要特殊字符需要转意 如 " --> str.contains("\"")
if(status){
System.out.println("包含");
}else{
System.out.println("不包含");
}
这些也能解决大部分问题了