/*
练习1:
需求:降下列字符串转成:我要学编程
"我我.我我...我要..要要...要要...学学学....学学...编编编...编程..程.程...程程...程"
练习2:
需求:将 ip 地址进行地址段顺序的排序
"172.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30"
练习3:
需求:对邮件地址进行校验
chuzhen1210@sina.com
到底用四种功能中的哪一个呢?或者哪几个呢?
思路:
1,如果只想知道该字符串是否对与错,使用匹配
2,想要将已有的字符串变成一个字符串,替换
3,想要按照自定义的方式将字符串变成多个字符串,使用切割,获取规则以外的子串
4,想要拿到符合需求的字符串子串,使用获取,获取符合规则的子串
*/
import java.util.*;
class RegexText01 {
public static void main(String[] args) {
//test_01();
//test_02();
checkMail();
}
public static void checkMail() {
String mail = "chuzhen1210@sina.com";
String regex = "[a-zA-Z_0-9]{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
boolean legal = mail.matches(regex);
System.out.println(legal);
}
public static void test_01() {
String str = "我我.我我...我要..要要...要要...学学学....学学...编编编...编程..程.程...程程...程";
/*
将已有的字符串变成另一个字符串,使用替换功能
1,可以先将 . 去掉
2,再将多个重复的内容变成单个内容
*/
String regex1 = "\\.+";
str = str.replaceAll(regex1, ""); //将 . 替换成空字符串
System.out.println(str);
String regex2 = "(.)\\1+";
str = str.replaceAll(regex2, "$1");
System.out.println(str);
}
public static void test_02() {
String ip = "172.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30";
String regex1 = "(\\d+)";
ip = ip.replaceAll(regex1, "00$1"); //前面补 0,使每位都不少于三位数
System.out.println(ip);
String regex2 = "0*(\\d{3})";
ip = ip.replaceAll(regex2, "$1"); //使每位都有且只有三位数
System.out.println(ip);
String[] arr = ip.split(" +"); //使用空格切割
TreeSet<String> ts = new TreeSet<String>(); //TreeSet 集合按自然顺序排序
for(String s : arr)
ts.add(s);
for(String s : ts)
System.out.println(s.replaceAll("0*(\\d+)", "$1"));
}
}