String

作者: panzhangbao | 来源:发表于2018-12-02 09:16 被阅读6次
    String s = "hello,my wife";
           System.out.println("我每天花 " + 3 + " 个小时时间读书");
    
           // 获取字符串长度
           int length = s.length();
    
           // 字符串查找
          int firstIndex = s.indexOf("l"); // 查找字符串 "l"首次出现的下标位置,如查找不到 返回 -1
          int lastIndex = s.lastIndexOf("l");   // 获取最后一个 l 的位置
          char index = s.charAt(4);    // 获取 第 5 个位置的字符
    
           // 字符串操作
           s.substring(1); // 从下标为 1 的位置开始获取子字符
           s.substring(1, 3);  // 从下标 1 到下标 3
    
           s.trim();   // 去掉前后空格
           s.replace("hello", "love");  // 将 hello 替换成 love
    
           s.startsWith("hello");  // 判断 prefix
           s.endsWith("word");     // 判断 suffix
    
           s.equals("hello");      // 判断字符串是否相等
           s.equalsIgnoreCase("Hello"); // 忽略大小写比较
    
           /**
            * 按字典顺序比较 2 个字符串,比较的是各个字符的 Unicode 值
            *  返回值说明:正整数 >
            *              负整数 <
            *              0      =
            */
           int result = s.compareTo("Hello.");
           result = s.compareToIgnoreCase("HeLLL");
    
           // 大小写转换
           s.toLowerCase();
           s.toUpperCase();
    
           // 分割字符串
           s.split(",|.|=");   // 串被 , . = 分割
           s.split(",", 5);    // 串被 , 分割,限制次数为 5 次
    
           // 格式化字符串
           String s2 = s.format("我是中国人,我有%d个家,%f元", 1, 55.5);
           System.out.println(s2);
    
    // 5.日期和时间串格式化
    /**
    *      常用的日期格式化转换符
    *   %te    一个月中的某一天             2
    *   %tb    指定语言环境的月份名称      Feb、二月
    *   %tB    指定语言环境的月份全程      February、二月
    *   %ta    指定语言环境的星期几        Mon、星期一
    *   %tA
    *   %tc    包括全部日期和时间信息       星期日 一月 15 23:59:56 CST 2017
    *   %ty    2 位年份                17
    *   %tY    4 位年份                2017
    *   %tj    一年中的第几天(001~366)    088
    *   %tm    月份                      01
    *   %td    一月中的第几天(01~310      16
    */
           Date date = new Date();
    
           String year = String.format("%tY", date);
           String  month = String.format("%tm",date);
           String day =  String.format("%td", date);
           String weak = String.format("%ta", date);
           System.out.println("今天是 " + year + "年" + month + "月" + day + "日" + weak);
    
           /** 时间格式化转换符
            *  %tH     2 位数字的 24 时制的小时(00 - 23)
            *  %tk     2 位数字的 24 时制的小时(0 - 23)
            *  %tI     2 位数字的 12 时制的小时(01 - 12)
            *  %tl     2 位数字的 12 时制的小时(1 - 12)
            *
            *  %tm     分钟(00 - 59)
            *  %ts     秒数(00 - 60)
            *  %tL     好秒数(000 - 999)
            *  %tN     微妙数(000000000 - 999999999)
            *
            *  %tp     指定语言环境下上午或下午标记             如:下午、pm
            *  %tz     相对于GMT RFC 82 格式的数字时区偏移量    如:+0800
            *  %tZ     时区缩写形式的字符串                      如:CST
            *
            *  %ts     1970-01-01 00:00:00 至今经过的秒数     如:1206426646
            *  %tQ     1970-01-01 00:00:00 至今经过的毫秒数     如:1206426646737453
            */
    
           /** 常见的日期和时间组合
            *      %tF     年-月-日(4 位年份)    如:2017-03-31
            *      %tD     月/日/年(2 位年份0     如:17/31/03
            *      %tc     全部日期和时间          如:星期二 三月 25 15:20:00 CST 2008
            *      %tr     时:分:秒 PM(AM)       如:03:22:04 下午
            *      %tT     时:分:秒              如:15:22:33
            *      %tR     时:分                 如:15:24
            */
    
           String ymd = String.format("%tF", date);
           String hms = String.format("%tT", date);
           String weak2 = String.format("%ta", date);
           System.out.println(ymd + " " + hms + " " + weak);
    
           /** 正则表达式中的写法
            *
            * .        代表任意一个字符
            * \\d      代表 0 - 9 的任何一个数字
            * \\D      代表任何一个非数字字符
            * \\s      空白字符
            * \\S      非空白字符
            * \\w      可用作标识符的字符,但不包括$
            * \\W      不可用于标识符的字符
            *
            * \\p{Lower}   小写字母 a - z
            * \\p{Upper}   大写字母 A - Z
            * \\p{ASCII}   ASCII 字符
            * \\p{Alpha}   字母字符
            * \\p{Digit}   十进制数字,即 0 - 9
            * \\p{Alnmu}   数字或字母字符
            * \\[{Punct}   标点符号
            * \\p{Print}   可打印字符:[\p{Graph}\x20]
            * \\p{Blank}   空格或制表符:[\t]
            * \\p{Cntrl}   控制字符:[\x00-\x1F\x7F]
            */
    
           /** 方括号 [] 含义
            * [abc]    abc任意一个字符
            * [^456]   456 之外的任何字符
            * [a-r]    a-r中的任何一个字母
            * [a-zA-Z] 任意一个英文字母
            * [a-e][g-z]]  a-e 或 g-z 中的任何一个字母(并运算)
            * [a-o&&[def]] 字母d、e、f(交运算)
            * [a-e&&[^bc]] a、d、e(差运算)
             */
    
           /** 限定修饰符
            *  ?       0次或1次       A?
            *  *       0次或多次       A*
            *  +       一次或多次       A+
            *  {n}     正好出现n次      A{2}
            *  {n,}    至少出现n次      A{3,}
            *  {n,m}   出现n-m次      A{2,5}
            */
    
           // EMail格式:x@x.X
           // 定义要匹配 E-mail地址的正则表达式
           String regex = "\\w+@\\w+(\\.\\w{2,3})+";
           String re1 = "aaa";
           String re2 = "aaaa@";
           String re3 = "a@12";
           String re4 = "a@126.com";
           String re5 = "a@126.com.cn";
           String re6 = "1@a.com.cn.com.cn";
           if (re6.matches(regex)){
               System.out.println("E-mail格式正确");
           }else {
               System.out.println("E-mail格式不正确");
           }
    
           /** 字符串生成器
            *
            * append()
            * insert(int offset, arg)
            * delete(int start, int end)
            */
    
           long startTime = System.currentTimeMillis();
           StringBuilder stringBuilder = new StringBuilder("begin");
           for (int i = 0; i < 10000; i++) {
               stringBuilder.append(i);
           }
           long endTime = System.currentTimeMillis();
           long time = endTime - startTime;
    
           System.out.println("StringBuilder用时:" + time + "毫秒");
           
           ```

    相关文章

      网友评论

          本文标题:String

          本文链接:https://www.haomeiwen.com/subject/twadcqtx.html