import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Cut {
// 1、 正则表达式
// 利用正则表达式判断字符串中是否都为字母和数字
public static Boolean regexIsWordOrNumber(String str) {
return str.matches("[^A-Za-z0-9]");
}
// 利用正则表达式提取字符中的字母和数字
public static String regexCut(String str) {
return str.replaceAll("[^A-Za-z0-9]", "");
}
// 2、 ASCII
// 利用ASCII判断字符串中是否都为字母和数字
public static Boolean ASCIIIsWordOrNumber(String str) {
for(int i=0;i
if( (str.charAt(i)>=48 && str.charAt(i)<=57) || (str.charAt(i)>=65 && str.charAt(i)<=90) || (str.charAt(i)>=97 && str.charAt(i)<=122) ){
i++;
continue;
}
return false;
}
return true;
}
// 利用正则表达式提取字符中的字母和数字
public static String ASCIICut(String str) {
String strCut="";
for(int i=0;i
// 方法一:
/*if( (str.charAt(i)>=48 && str.charAt(i)<=57) || (str.charAt(i)>=65 && str.charAt(i)<=90) || (str.charAt(i)>=97 && str.charAt(i)<=122) ){
strCut+=str.charAt(i);
}*/
// 方法二:数字部分可以用java自带函数判断一个字符是否是数字
if( Character.isDigit(str.charAt(i)) || (str.charAt(i)>=65 && str.charAt(i)<=90) || (str.charAt(i)>=97 && str.charAt(i)<=122) ){
strCut+=str.charAt(i);
}
}
return strCut;
}
// 3、 截取连续部分(字母等)
// 3.1、 截取连续的数字 【读取字符串中第一个连续的字符串,不包含后面不连续的数字】
public static String getNumbers(String content) {
Pattern pattern = Pattern.compile("\\d+"); //英文字母数字为 "[A-Za-z0-9]+"
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
return matcher.group(0);
}
return "";
}
// 3.2、 截取连续的非数字 【读取字符串中第一个连续的字符串,不包含后面不连续的非数字】
public static String getNotNumbers(String content) {
Pattern pattern = Pattern.compile("\\D+");
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
return matcher.group(0);
}
return "";
}
/* 测试部分 */
public static void main(String[] args) {
String str = "中华人民共和国@AZ^123#az%456Mn*789";
// 1、正则
if(!Cut.regexIsWordOrNumber(str))//正则判断不全是字母和数字
System.out.println("1---"+Cut.regexCut(str));
else
System.out.println("1---"+str);
// 2、 ASCII
if(!Cut.ASCIIIsWordOrNumber(str))//正则判断不全是字母和数字
System.out.println("2---"+Cut.ASCIICut(str));
else
System.out.println("2---"+str);
// 3、截取连续部分
str="99AZ123中国99az";
System.out.println("3.1 第一组连续数字字符串---"+Cut.getNumbers(str));
System.out.println("3.2 第一组连续非数字字符串---"+Cut.getNotNumbers(str));
}
}