关于java字符串处理的那些事儿

import org.junit.Test;

import java.util.Locale;

/**
 * @Author :ygj
 * @Date :Created in 2021/11/20 11:20
 * @Description:String 类测试
 * @Modified By:
 */
public class Demo1 {
    static String s1 = new String("111:222:124:aaa:bbb:ccc: :: :");

    public void test1() {

        //从下标为一开始 截取1 之后的所有字符 (包含1这个位置),超出范围报异常
        String a1 = s1.substring(1);
        System.out.println(a1);
        //参数 某个下标开始 某个下标结束,左闭右开(m,n] 超出范围报异常 如果 m,n相同 无法取值
        String a2 = s1.substring(2, 4);
        System.out.println(a2);
        //以包含的字符分割
        String[] a3 = s1.split(":");
        System.out.println(a3.toString());
        //以没有包含的字符分割
        String[] a4 = s1.split("%");
        System.out.println("a4.length:" + a4.length + ",a4.toString():" + a4.toString());
        /**
         * limit参数控制应用模式的次数,因此会影响结果数组的长度。
         * 如果限制n大于零,则该模式将最多应用n - 1 次,数组的长度将不大于n ,
         * 并且数组的最后一个条目将包含最后一个匹配的分隔符之外的所有输入。
         * 如果n为非正数,则该模式将被应用尽可能多的次数,并且数组可以具有任意长度。
         * 如果n为零,则该模式将被应用尽可能多的次数,数组可以具有任意长度,并且将丢弃尾随的空字符串。
         *
         * 例如,字符串"boo:and:foo"使用这些参数产生以下结果:
         *
         * 正则表达式  限制          结果
         * :         2    { "boo", "and:foo" }
         * :         5    { "boo", "and", "foo" }
         * :        -2    { "boo", "and", "foo" }
         * ○         5    { "b", "", ":and:f", "", "" }
         * ○        -2    { "b", "", ":and:f", "", "" }
         * ○         0    { "b", "", ":and:f" }
         */
        //快记 : 正数 (n) 匹配 n-1 次,结果数组长度为<=n 并且如果最后一个字符是分隔符 会保留一个”“ 空串
        //       负数 匹配尽可能多的次数,并且如果最后一个字符是分隔符 会保留一个”“ 空串
        //       0   匹配尽可能多的次数,丢弃尾随的空字符串(可能有多个)
        String[] a5 = s1.split(":", 2);//正数2
        System.out.println("limit:2->a5.length:" + a5.length + ",a5.toString():" + a5.toString());

        String[] a6 = s1.split(":", 8);//正数8
        System.out.println("limit:8->a6.length:" + a6.length + ",a6.toString():" + a6.toString());

        String[] a7 = s1.split(":", -2);//负数-2
        System.out.println("limit:-2->a7.length:" + a7.length + ",a7.toString():" + a7.toString());
        //
        String[] a8 = s1.split(":", 0);//0 等同于s1.split(":")
        System.out.println("limit:0->a8.length:" + a8.length + ",a8.toString():" + a8.toString());

        //String 重写了 equals 方法 先比较地址值,在比较每个字符。所以hashMap(以String 为key的) 放不同对象的Sting 为key, 但字符相同会被认为是同一个key
        String s2 = new String("aaa:bbb:ccc: :: :");
        boolean a9 = s1.equals(s2);
        boolean a10 = s1 == s2;
        System.out.println("s1.equals(s2):" + s1.equals(s2) + ",s1==s2:" + a10);

        //子串串全量替换 将调用者 s1 的”:“ 全部替换为"lol"
        String a11 = s1.replaceAll(":", "lol");
        System.out.println(a11);
        //字符替换
        String a12 = s1.replace(':', 'A');
        System.out.println(a12);
        //字符替换
        String a13 = s1.replace("aa", "bb");
        String a14 = s1.replace(":", "&");
        System.out.println(a13 + "," + a14);
        //大写转换
        String a15 = s1.toUpperCase();
        System.out.println(a15);
        //大写转换 指定的语言 ,转换后的大小长度不一定为原来的长度,没有体验到转换效果???
        String a16 = s1.toUpperCase(Locale.CHINA);
        System.out.println(a16);
        //忽略大小写进行比较
        String s3 = "111:222:124:AAA:BBB:CCC: :: :";
        boolean a17 = s1.equalsIgnoreCase(s3);
        System.out.println(a17);
        //获取字符长度 空格也算
        int a18 = s1.length();
        System.out.println(a18);
        //测试 半角和全角空格的长度 中文字符的长度
        System.out.println("半角:" + " ".length() + ",全角:" + " ".length() + ",中文字符的长度:" + "中".length());
        //空字符串 和空格字符串是有差别的 半角空格
        System.out.println("".length() + " ".length());
        //todo
        int i = 10;

    }

    @Test
    public void tsetR() {
        //大写转换 指定的语言 ,转换后的大小长度不一定为原来的长度
        String a16 = s1.toUpperCase(Locale.CHINA);
        String s2 = "一,二";

        System.out.println(a16);
        System.out.println(s2.toUpperCase(Locale.CHINESE));
    }

    @Test
    public void tsetR1() {
        //半角:1,全角:1,中文字符的长度:1
        System.out.println("半角:" + " ".length() + ",全角:" + " ".length() + ",中文字符的长度:" + "中".length());

    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值