正则表达式练习题


package com.cds.test;

import java.util.Arrays;

import org.junit.Test;

public class RegexLearner {
	@Test
	/**
	 * 需求:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”
	 * 100
	 * 80
	 * 分析:
	 * 1,将字符串切割成字符串数组
	 * 2,将字符串转换成数字并将其存储在一个等长度的int数组中
	 * 3,排序
	 * 4,将排序后的结果遍历并拼接成一个字符串
	 */
	public void sortStringNumArray() {
		String a = "91 27 46 38 50";
		System.out.println("原string数组为:" + "\n" + a);
		//字符串转化为string数组
		String[] split = a.split(" ");
		//string数组转化为int数组
		int[] arr = new int[split.length];
		for (int i = 0; i < split.length; i++) {
			arr[i] = Integer.parseInt(split[i]);
		}
		System.out.println("转化为int数组后的数组为:");
		for (int i : arr) {
			System.out.print(i + " ");
		}
		
		System.out.println("\n" + "排序后的int数组为:" );
		//int数组排序
		Arrays.sort(arr);		
		for (int i : arr) {
			System.out.print(i + " ");
		}
		
		System.out.println("\n转化为StringBuffer数组为:");
		StringBuffer st = new StringBuffer();
		for (int i : arr) {
			st.append(i + " ");
		}
		System.out.println(st);
		
	}
	
	@Test
	public void sortString() {
		/*
		 * 叠词:
		 */
		
		/*
		 * 分组正则:
		 * 	(.)\\1 :  其中\\1表示把第一组重复一次
		 * 	(.)\\2:\\2代表把第二组在重复一次
		 */
		String regex1 = "(.)\\1(.)\\2";	
		System.out.println("快快乐乐".matches(regex1));
		String regex2 = "(..)\\1";
		System.out.println("快乐快乐".matches(regex2));

	}
	
	@Test
	//切割
	public void test1() {
		//请按照叠词切割一下字符串,将字符串中的叠词部分删除
		String a = "sdqqfgkkkhjppppkl";
		// \\1+ 代表第一组至少出现一次
		String regex3 = "(.)\\1+";
		
		String[] split = a.split(regex3);
		
		
		for (String string : split) {
			System.out.print(string + " ");
			
		}
	}
	
	@Test
	//切割
	public void test2() {
		//请按照叠词切割一下字符串,将字符串中的叠词部分删除
		String a = "sdqqfgkkkhjppppkl";
		// \\1+ 代表第一组至少出现一次
		String regex3 = "(.)\\1+";
		
		String[] split = a.split(regex3);
		
		
		for (String string : split) {
			System.out.print(string + " ");
			
		}
	}

	@Test
	/**
	 * 将			我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
	 * 利用正则变化为: 我要学编程
	 */
	public void test3() {
		String s = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
		String s2 = s.replaceAll("\\.+","");
		System.out.println(s2);
		String s3 = s2.replaceAll("(.)\\1+", "$1");	// $1表示取第一组的元素
		System.out.println(s3);	

	}
	


	
	

}

你可能感兴趣的:(个人摘录)