java截取字符串中的字母数字

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<str.length();){
   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<str.length();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));
  
 }
}
posted @ 2018-06-06 15:59  军999  阅读(3277)  评论(0)    收藏  举报