赞
踩
目录
一:正则表达式(regex) java.util.regex.pattern
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
概述:正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。
· 方法: 字符串对象提供了匹配正则表达式的方法, 判断是否匹配正则表达式,匹配返回true,不匹配返回 public boolean matches(String regex):
[abc] | 只能是a, b, 或c |
[^abc] | 除了a, b, c之外的任何字符 |
[a-zA-Z] | a到z A到Z,包括(范围) |
[a-d[m-p]] | a到d,或m通过p:([a-dm-p]联合) |
[a-z&&[def]] | d, e, 或f(交集) |
[a-z&&[^bc]] | a到z,除了b和c:([ad-z]减法) |
[a-z&&[^m-p]] | a到z,除了m到p:([a-lq-z]减法) |
. | 任何字符 |
\d | 一个数字: [0-9] |
\D | 非数字: [^0-9] |
\s | 一个空白字符: [ \t\n\x0B\f\r] |
\S | 非空白字符: [^\s] |
\w | [a-zA-Z_0-9] 英文、数字、下划线 |
\W | [^\w] 一个非单词字符 |
X? | X , 一次或根本不 |
X* | X,零次或多次 |
X+ | X , 一次或多次 |
X { n } | X,正好n次 |
X { n, } | X,至少n次 |
X {n,m} | X,至少n但不超过m次 |
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入您注册的手机号:");
- String format = sc.next();
- //1. 手机号码
-
- if (format.matches("1[3-9]\\d{9}")) { }
-
- //2. 邮箱号码
- /* 判断邮箱格式是否正确 3268847878@qq.com
- 判断邮箱格式是否正确 3268847dsda878@163.com
- 判断邮箱格式是否正确 3268847dsda878@pci.com.cn*/
-
- if (format.matches("\\d{1,12}@[a-zA-Z0-9]{2,3}(\\.[a-zA-Z0-9]{2,3}){1,2}")) { }
-
- //3. 座机号码 判断座机式是否正确 027-3572457 0273572457
-
- if (format.matches("0\\d{2,5}\\-?\\d{6,10}"));
-
-
- //4. 金额格式 99 0.5 99.5 019 √ 0.3.3 ×
-
- if (money.matches("0?\\d{1,20}| 0\\.\\d{1,2}|0?\\d{1,20}\\.\\d{1,2}"))
-
- }
-

方法名 | 说明 |
public String replaceAll(String regex,String newStr) | 按照正则表达式匹配的内容进行替换 |
public String[] split(String regex): | 按正则表达式规则分割字符串,返回一个字符串数组。 |
- public static void main(String[] args) {
- String names = "库里dhdfhdf342麦科勒姆43fdffdfbjdfaf特雷杨";
-
- String[] arrs=names.split("\\w+");
- for (int i = 0; i < arrs.length; i++) {
- System.out.println(arrs[i]);
- }
-
- String name22=names.replaceAll("\\w+"," ");
- System.out.println(name22);
- }
- // 需求:从上面的内容中爬取出 电话号码和邮箱。
- public static void main(String[] args) {
- String rs = "来黑马程序学习Java,电话020-43422424,或者联系邮箱" +
- "itcast@itcast.cn,电话18762832633,0203232323" +
- "邮箱bozai@itcast.cn,400-100-3233 ,4001003232";
-
- // 1、定义爬取规则,字符串形式
- String regex = "(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})|(1[3-9]\\d{9})" +
- "|(0\\d{2,6}-?\\d{5,20})|(400-?\\d{3,9}-?\\d{3,9})";
-
- // 2、把这个爬取规则编译成匹配对象。
- Pattern pat=Pattern.compile(regex);
-
- // 3、得到一个内容匹配器对象
- Matcher mat= pat.matcher(rs);
-
- // 4、开始找了
- while (matcher.find()) {
- String rs1 = matcher.group();
- System.out.println(rs1);
- }
- }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
概述:数组操作工具类,专门用于操作数组元素的
方法名 | 说明 |
public static String toString(类型[] a) | 返回数组的内容(字符串形式) |
public static void sort(类型[] a) | 对数组进行默认升序排序 |
public static <T> void sort(类型[] a, Comparator<? super T> c) | 使用比较器对象自定义排序 |
public static int binarySearch(int[] a, int key) | 二分搜索数组中的数据,存在返回索引,不存在返回-1 |
- public static void main(String[] args) {
- int[] arr = {10, 40, 20, 30};
-
- // 1、返回数组内容的 toString(数组)
- String rs = Arrays.toString(arr);
- System.out.println(rs);
-
- // 2、排序的API(默认自动对数组元素进行升序排序)
- Arrays.sort(arr);
- System.out.println(Arrays.toString(arr));
-
- // 3、二分搜索技术(前提数组必须排好序才支持,否则出bug)
- int index = Arrays.binarySearch(arr, 30);
- System.out.println(index);
-
- // 返回不存在元素的规律: - (应该插入的位置索引 + 1)
- int index2 = Arrays.binarySearch(arr, 25);
- System.out.println(index2);
- }

public static <T> void sort ( 类型[ ] a, Comparator<? super T> c) | 使用比较器对象自定义排序 |
如果认为左边数据 大于 右边数据 | 返回正整数 |
如果认为左边数据 小于 右边数据 | 返回负整数 |
如果认为左边数据 等于 右边数据 | 返回0 |
- public static void main(String[] args) {
-
- // stude是创建的类,这里不方便展示,student中重写了toString方法
- //需求:降序排序!(自定义比较器对象,只能支持引用类型的排序!!)
- student[] arrs = new student[3];
- arrs[0] = new student("库里", 20, 191.2);
- arrs[1] = new student("汤普森", 30, 195.9);
- arrs[2] = new student("格林", 28, 198.2);
-
- //排序前打印,需要在子类中重写toString方法
- System.out.println(Arrays.toString(arrs));
-
- /*
- 参数一:被排序的数组 必须是引用类型的元素
- 参数二:匿名内部类对象,代表了一个比较器对象。
- */
- Arrays.sort(arrs, new Comparator<student>() {
- @Override
- public int compare(student o1, student o2) {
- //自己指定规则
- return -(o1.getAge() - o2.getAge());//升序
- /*return -(o1.getAge() - o2.getAge()); 降序
- 如果这里比较浮点型,需要调用 compare API
- return Double.compare(o1.getHeight(), o2.getHeight());*/
- }
- });
-
- System.out.println(Arrays.toString(arrs));//排序后打印
- }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1
- public static void main(String[] args) {
-
- Integer[] arr = {5, 1, 3, 2, 10, 9, 30};
-
- //定义一个循环控制选择几轮: arr.length - 1
- for (int i = 0; i < arr.length - 1; i++)
- {
- // 定义内部循环,控制选择几次
- for (int j = i + 1; j < arr.length; j++) {
- if (arr[i] > arr[j]) {
- int temp;
- temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp; } }
- }
- System.out.println(Arrays.toString(arr));
- }

- public static int binarySearch(int[] arr, int data){
- // 1、定义左边位置 和 右边位置
- int left = 0;
- int right = arr.length - 1;
-
- // 2、开始循环,折半查询。
- while (left <= right){
- // 取中间索引
- int middleIndex = (left + right) / 2;
- // 3、判断当前中间位置的元素和要找的元素的大小情况
- if(data > arr[middleIndex]) {
- // 往右边找,左位置更新为 = 中间索引+1
- left = middleIndex + 1;
- }else if(data < arr[middleIndex]) {
- // 往左边找,右边位置 = 中间索引 - 1
- right = middleIndex - 1;
- }else {
- return middleIndex;
- }
- }
- return -1; // 查无此元素
- }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public class curry {
- public static void main(String[] args) {
-
- //1.标准匿名内部类
- swimmg s = new swimmg() {
- @Override
- public void run() {
- System.out.println("库里跑的很快~");
- }
- };//go(s);
-
-
- //2.初步简化
- swimmg s1 = () -> {
- System.out.println("汤普森跑的很快~~");
- }; //go(s1);
-
- //3. 最终简化
- go(() -> {
- System.out.println("格林跑的很快~~");
- });
-
- }
-
- public static void go(swimmg s) {
- System.out.println("开始~");
- s.run();
- System.out.println("结束~");
- }
-
- @FunctionalInterface // 一旦加上这个注解必须是函数式接口,里面只能有一个抽象方法
- abstract interface swimmg {
- public abstract void run();
- }
- }

- package Test;
-
- import java.util.Arrays;
- import java.util.Comparator;
-
- //简化 compare 自定义排序规则
-
- public class curry {
-
- public static void main(String[] args) {
-
- Integer[] ages1 = {34, 12, 42, 23};
- //第一步
- Arrays.sort(ages1, new Comparator<Integer>() {
- @Override
- public int compare(Integer o1, Integer o2) {
- return o2 - o1; // 降序
- }
- });
-
- //第二步
- Arrays.sort(ages1, (Integer o1, Integer o2) -> {
- return o2 - o1; // 降序
- });
-
- //第三步
- Arrays.sort(ages1, (o1, o2) -> {
- return o2 - o1;
- });
-
- //第四步
- Arrays.sort(ages1, (o1, o2) -> o2 - o1);
-
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。