哈kk成长之路

细说String常用方法和正则

一.String常用方法

1.长度length()
2.拼接str.concat(str2)
3.格式化

//方式一
System.out.printf(“大家好,我的名字叫:%s,年芳:%d岁,我有存款:%f %n”,“虫儿飞”,40,2000000.123);
//方式二
String s=String.format(“大家好,我的名字叫:%s,年芳:%d岁,我有存款:%f %n”,“虫儿飞”,40,2000000.123);
System.out.println(s);

(其中%s表示的是字符串,%d表示的是整型,%f表示的是浮点数,%n表示的是换行符)
4.charAt(index)返回指定索引处的字符
5.indexOf(str)返回指定字符串在此字符串中第一次出现处的索引
6.equals()和equalsIgnoreCase()
7.getBytes()使用默认字符集将字符串变为字节数组,IO流中会用到
8.toCharArray()字符串转换为字符数组
9.截取:subString()
10.转换成大小写toLowerCase()toUpperCase()
11.截取前后空白:trim()
12.替换:replace()
13.分割:split
14.正则匹配matches(String reg)返回boolean

以下展示代码

    @Test//String 常用方法
    public void test1(){
        String s="hallo woRlda";
        System.out.println(s.charAt(3));
        System.out.println(s.indexOf("lo"));
        System.out.println(s.indexOf('b'));
        System.out.println(s.indexOf('a'));
        System.out.println(s.compareTo("hello world"));
        System.out.println(s.equals("hAllo worlda"));//false
        System.out.println(s.equalsIgnoreCase("hAllo wOrlda"));
        System.out.println(Arrays.toString("哈哈".getBytes()));
        System.out.println(Arrays.toString(s.toCharArray()));
        System.out.println(Arrays.toString("大家好".toCharArray()));
        System.out.println(s.substring(2,6));//前闭后开
        System.out.println(s.substring(2));
        System.out.println(s.toLowerCase());//全部变小写
        System.out.println(s.toLowerCase());//全部变大写
        System.out.println("  哈 KK  ".trim().length());//截取前后空白
        System.out.println("  哈 KK  ".length());//8
        System.out.println("长风破浪会有时,直挂云帆济沧海".replace('长','短'));
        System.out.println("长风破浪会有时,直挂云帆济沧海".replace("长风","哈哈"));
        System.out.println("长风破浪会有时,直挂云帆济沧海".replaceAll("长风","弟弟"));
        //寻找已有的字符进行分割,分割符之间的字符作为数组的元素
        System.out.println(Arrays.toString("hello-world-haha".split("1")));
    }

以上代码块运行结果

二.正则

1.何为正则
正则表达式其实就是规则表达式(英文名称是:Regular Expression,所以简写自然是regex)。
作用:用来替换那些符合某个模式(规则)的文本。
2.具体规则
1.任意一个字符表示匹配对应的字符,如a匹配a,7匹配7,-匹配-。
2. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。
3. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中 括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。
4. ^ 在中括号里面和外面含义不同,如在外时,就表示开头,如^ 7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如 [ ^abc]表示匹配出去abc之外的其他任一字符。
5. .表示匹配任意的字符。
6. \d表示数字。
7. \D表示非数字。
8. \w表示字母、数字、下划线,[a-zA-Z0-9_]。
9. \W表示不是由字母、数字、下划线组成。
10. [\u4e00-\u9fa5]匹配汉字
11. ?: 表示出现0次或1次。
12. +表示出现1次或多次。
13. *表示出现0次、1次或多次。
14. {n}表示出现n次。
15. {n,m}表示出现n~m次。
16. {n,}表示出现n次或n次以上。

以下展示代码块

@Test//正则
    public void test2(){
        String s="-ea";
        //-放在里面表示区间 放在外面表示本身这个字符。
        System.out.println(s.matches("-[abcdefg][a-g]"));//true
        String s2="^abx";
        System.out.println(s2.matches("^[a][b][x]$"));//表示以a开头x结尾
        System.out.println(s2.matches("\\^[a][b][x]"));//表示匹配自己
        System.out.println(s2.matches("[^a][a][b][x]"));//表示除了a之外的任意字符都可以
        String s3="^hel";
        System.out.println(s3.matches("...."));
        String s4="123";
        System.out.println(s4.matches("123"));
        System.out.println(s4.matches("[0-9][0-9][0-9]"));
        System.out.println(s4.matches("\\d\\d\\d"));//\\d表示0-9
        String s5="abc_123";
        System.out.println(s5.matches("abc_123"));
        System.out.println(s5.matches("\\w\\w\\w\\w\\w\\w\\w"));
        String s6="hkk哈开开";
        System.out.println(s6.matches("\\w\\w\\w[\\u4e00-\\u9fa5][\\u4e00-\\u9fa5][\\u4e00-\\u9fa5]"));
        String s7="跟我一起唱:come on everybody 666!";
        System.out.println(s7.matches("............................"));
        String s8="1071461302@qq.com";
        System.out.println(s8.matches("\\w+@qq.com"));

    }

有一个比较经典的题目案例可以帮助大家熟练正则表达式:
某网站要求注册的账号只能是:数字和字母,不能都是字母,不能都是数字,且要求字母开头,长度在6-12之间。
以下是代码

    @Test//案例
    public void test1(){
        Scanner sc=new Scanner(System.in);
        String s="";
        while(!s.matches("^[a-zA-Z](?![a-zA-Z]{5,11})[a-zA-Z0-9]{5,11}")){
            System.out.println("请输入注册帐号");
            s=sc.next();
        }
        System.out.println("注册成功");
    }

感谢evbd!!!

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值