正则表达式的判断、分隔、转换

正则表达式

为什么需要正则表达式?
在实际开发中,我们常常需要做某些条件的判断,有些时候便会大量使用条件判断语句,这使得程序过于繁琐,这时候使用正则表达式就会使程序变得更加清晰。

package zhenze;

import java.util.Scanner;

public class CheckQQ {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入你的QQ号码:");
		
		String qq=sc.nextLine();
		System.out.println("checkQQ:"+check(qq));
	}
	public static boolean check(String s)
	{ 
		//先定义一个flag标志
		boolean flag=true;
		 //判断长度是否是5到15位
		if(s.length()>5&&s.length()<15) {
			//判断是否以零开头
			if(!s.startsWith("0")) {
			//判断是否都是数字
			char[] str=s.toCharArray();
			for(int i=0;i<str.length;i++)
				{
					char ch=str[i];
					if(!Character.isDigit(ch)) {
						flag=false;
						break;
					}
				}
			}
			else
				flag=false;
			
		}
		else
		flag=false;
	
		return flag;
		
		
	}
}
这段代码是判断一个QQ号码是否正确,使用了多次的if语句,显得程序过于繁琐,如果我们直接使用正则表达式就会变得清晰。

使用了正则表达式改进之后的代码

package zhenze;

import java.util.Scanner;

public class CheckQQ {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入你的QQ号码:");
		
		String qq=sc.nextLine();
	    CheckQQ.check(qq);
	}
	public static void check(String s)
	{ 
	//[1-9]表示首位是1-9的任意数字不能为0,[0-9]表示除首位之外可以是0到9的任意数字,{4,14}是对[0-9]的修饰,表示符合[0-9]规则的数字可以有4到14个。
		String regex= "[1-9] [0-9] {4,14}";
		System.out.println(s.matches(regex));
	}
}

正则表达式的分割功能:
来自String类的split简介:
public String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
例如,字符串 “boo:and:foo” 使用这些表达式可生成以下结果:
Regex 结果
: { “boo”, “and”, “foo” }
o { “b”, “”, “:and:f” }
参数:
regex - 定界正则表达式
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的

该方法的具体应用:

package zhenze;

import java.util.Scanner;

public class fenge {
	public static void main(String[] args) {
	
		//定义一个年龄搜索范围
		String str="13-18";
		//定义规则
		String regex="-";
		//调用方法 split(String regex):分割字符串
		String[] strs=str.split(regex);
		//遍历
//		for(int i=0;i<strs.length;i++) {
//			System.out.println(strs[i]);
//		}
		
		//如何得到int类型呢?
		int startAge =Integer.parseInt(strs[0]);
		int endAge =Integer.parseInt(strs[1]);
		
		//键盘录入年龄
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入年龄");
		int age=sc.nextInt();
		
		if(age<=startAge||age>=endAge) {
			System.out.println("不是");
		}
		else
			System.out.println("是");
	}
	
}

正则表达式的应用:

package zhenze;

import java.util.Arrays;
import java.util.Scanner;

/*
 * 
 * 字符串:"91 34 56 78"
 * 请写代码实现最终输出结果是:"34 56 78 91"
 * A:定义一个字符串
 * A:将字符串分割
 * B:将字符数组转换为整型数组
 * C:数组排序
 * D:将排序后的数组组装为字符串数组
 * E:将字符串数组转换为字符串
 * 
 * 
 *
 * 
 * */
public class fenge {
	public static void main(String[] args) {
		String str="91 34 56 78";
	   //将字符串分割
		String reget=" ";
		
		 String[] array=str.split(reget);
		 //将分割后的字符数组转换为整型数组
		 int[] arrayint=new int[array.length];
		  for(int i=0;i<array.length;i++) {
			  arrayint[i]=Integer.parseInt(array[i]);
		  }
		 //对整型数组进行排序
		 Arrays.sort(arrayint);
	//将排序后的整型数组组装为一个字符串
		StringBuilder sb=new StringBuilder();
		for(int x=0;x<arrayint.length;x++) {
			sb.append(arrayint[x]).append(" ");
		}
		//将字符数组转换为字符串
	String s=sb.toString();
	//去除前后空格
	s.trim();
	System.out.println(s);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值