java提取字符串中字母_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

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));

}

}

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

w浩森

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值