String

2018-12-02  本文已影响6人  panzhangbao
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 + "毫秒");
       
       ```
上一篇下一篇

猜你喜欢

热点阅读