• No1_5.字符串的基本操作_Java学习笔记


      1 import java.text.DecimalFormat;
      2 import java.text.NumberFormat;
      3 import java.util.Locale;
      4 import java.util.StringTokenizer;
      5 import java.util.Date;
      6 import java.util.Scanner;
      7 
      8 public class HelloString {
      9 
     10     public static void main(String[] args) {
     11         // TODO Auto-generated method stub
     12         System.out.println("终于到字符串这儿了,开始学习~~~");
     13 
     14         /*********************************
     15          * 一、创建字符串: 用双引号来声明
     16          */
     17         System.out.println("
    一、创建字符串: 用双引号来声明*******************************");
     18         // 初始化
     19         String s = new String();
     20         s = "good";
     21         // 用字符数组创建字符串:String(char a[])
     22         char a[] = { 'g', 'o', 'o', 'd', 'a', 'f', 't', 'e', 'r', 'n', 'o',
     23                 'o', 'n', '!' };
     24         String s1 = new String(a);
     25         // 截取字符串:String(char a[],int offset,int length),只能用字符数组截取
     26         String s2 = new String(a, 4, 9);
     27         System.out.println(s + "
    " + s1 + "
    " + s2);
     28 
     29         /*********************************
     30          * 二、字符串连接
     31          */
     32         System.out.println("
    二、字符串连接*******************************");
     33         // 多个字符串连接、连接其它类型 +
     34         String s3 = new String("Hello");
     35         String s4 = new String("World你好世界!");
     36         String s5 = s3 + " " + s4;
     37         System.out.println(s5);
     38         int runTime = 40;
     39         float workTime = 8.77f;
     40         System.out.println("我每天花" + runTime + "分钟跑步! 然后花" + workTime + "小时上班!");
     41         /*********************************
     42          * 三、获取字符串信息,长度、字符索引位置 length() 长度 indexOf() 字符首次出现位置的索引(没找到值是-1)
     43          * lastIndexOf() 字符最后一次出现位置的索引(没找到值是-1)
     44          */
     45         System.out
     46                 .println("
    三、获取字符串信息,长度、字符索引位置*******************************");
     47         System.out.println("s5字符串"" + s5 + ""的长度是" + s5.length());
     48         String s6 = "good morning";
     49         System.out.println("字符o在字串s6:"+s6+"的位置是" + s6.indexOf("o"));
     50         System.out.println("字符o在字串s6:"+s6+"最后的位置是" + s6.lastIndexOf("ing"));
     51         // 如果参数是空串"",则返回结果与调用该字串的length()方法的返回结果相同!!
     52         System.out.println("字符空串在字串s6:"+s6+"最后的位置是(与调用该字串的length()方法的返回结果相同!!)" + s6.lastIndexOf(""));
     53 
     54         /*********************************
     55          * 四、获取指定索引位置的字符 str.charAt(int index)
     56          */
     57         System.out.println("
    四、获取指定索引位置的字符*******************************");
     58         String s7 = "I have a dream~";
     59         char myChar = s7.charAt(3);
     60         System.out.println("字符串s7"I have a dream"中索引位置是3的字符是:" + myChar);
     61 
     62         /*********************************
     63          * 五、去除字符串中的空格 六、字符串替换
     64          */
     65         System.out.println("
    五、去除字符串中的空格*******************************");
     66         System.out.println("六、字符串替换    *******************************");
     67 
     68         // 1.去除字符串中的前导、尾部空格 str.trim()
     69         String s8 = "     Captain America 3     , hoho!";
     70         String s8Trim = s8.trim();
     71         System.out.println("字串s8的长度是" + s8.length() + ";值是:" + s8);
     72         System.out.println("字串s8Trim的长度是" + s8Trim.length() + ";去除前导尾部空格后的值是:"
     73                 + s8Trim);
     74 
     75         // 2.去除字符串中的所有空格,该方法利用分割和追加实现去除空格的目的。 StringTokenizer(String str,String delim)
     76 
     77         StringTokenizer s8St = new StringTokenizer(s8, " "); // 使用空格来分隔字符串
     78         StringBuffer sb = new StringBuffer(); // 定义字符串缓存对象
     79         System.out.println("这个可以直接循环的,用空格做为分隔符提取字符串:");
     80         while (s8St.hasMoreTokens()) { // 判断字符串中是否还有空格
     81             sb.append(s8St.nextToken()); // 向生成器中追加内容,
     82             System.out.println(sb.toString());
     83         }
     84         System.out.println("用StringTokenizer方法去掉s8所有空格之后的字符串是:" + sb);
     85         System.out.println("用StringTokenizer方法去掉s8所有空格之后的字符串是:" + sb.toString());
     86 
     87         // 3.去除字符串中的所有空格,用空串替换空格字符。 str.replaceAll(String regex, String
     88         // replacement)
     89 
     90         String s8ReplaceAll = s8.replaceAll(" ", ""); // replace() 与
     91                                                         // replaceAll()主要区别,前者可以替换转义字符
     92         String s8ReplaceFirst = s8.replaceFirst("America", "Chinese");
     93         System.out.println("替换掉所有空格后:" + s8ReplaceAll);
     94         System.out.println("实在找不到替换哪个词了,嘿嘿..."
     95                 + "
    只替换查到的第一个词America后替换成chinese:" + s8ReplaceFirst);
     96 
     97         /*********************************
     98          * 七、判断字符串 判断字符串是否相等、是否以指定的字符串开始和结尾
     99          */
    100         System.out.println("
      七、判断字符串    *******************************");
    101         // 1.判断字符串是否相等 equals() equalsIgnoreCace()
    102         // s9.equals(anObject) 严格区分大小写 str.equalsIgnoreCase(anotherString)
    103         // 不区分大小写
    104         String s9 = "I have a dream"; // 分配的是栈内存:先进后出
    105         String s9Equals1 = "i have a dream";
    106         String s9Equals2 = new String("I have a dream"); // 分配的是堆内存:顺序随意,主要存放对象
    107         String s9Equals3 = s9;
    108         System.out.println("s9.equals(anObject) 严格区分大小写的结果是:"
    109                 + (s9.equals(s9Equals2)));
    110         System.out.println("str.equalsIgnoreCase(anotherString) 不区分大小写:"
    111                 + (s9.equalsIgnoreCase(s9Equals1)));
    112         System.out.println("==双等号比较的是内存位置,不适宜拿来比较字符串,可以比较数值:"
    113                 + (s9 == s9Equals3));
    114 
    115         // 2.判断字符串的开始和结尾
    116         // startWith() endsWith() 用于判断字符串是否以指定的字符开始或结尾的
    117         String s10 = "angry birds!";
    118         boolean s10Start = s10.startsWith("angry");
    119         boolean s19End = s10.endsWith("birds!");
    120         System.out.println(s10 + "是否以字符串angry开始的:" + s10Start
    121                 + "
    是否以birds!结尾的:" + s19End);
    122 
    123         // 3.字母大小写转换
    124         // str.toUpperCase(); str.toLowerCase()
    125         String s11 = "Dreams Come True!";
    126         System.out.println(s11 + "全部转换成大写后:" + s11.toUpperCase());
    127         System.out.println(s11 + "全部转换成小写后:" + s11.toLowerCase());
    128 
    129         // 4.字符串分割
    130         // split(String sign)
    131         String s12 = new String("meet classmate by chance, happy everyday~");
    132         String[] s12Split = s12.split(" |,");
    133         // 分割字符串,返回的结果是数组,num分割次数,无分割所有字符,多个字符分割用|隔开
    134         System.out.println("按分割字符分割后的字符串是:");
    135         for (int i = 0; i < s12Split.length; i++) {
    136             System.out.println(s12Split[i]);
    137         }
    138 
    139         // 5.根据指定分隔符把字符串分行
    140         System.out.println("
      1、根据指定分隔符把字符串分行~~~~~~~~~~~~~");
    141         String something = "人是无法完全做到换位思考的," 
    142                 + "因为思想、经历、感官、全都不一样,"
    143                 + "就像我说大海很漂亮,你却说淹死过很多人。~"
    144                 + "认清这世界,然后爱它,就这么一辈子,下一世你可能就不再在这个世界了。《龙猫》";
    145         String st1[] = something.split("。|,|~");
    146         System.out.println("喜欢的话,按分隔符分开后:");
    147         for (int j = 0; j < st1.length; j++) {
    148             System.out.println(st1[j]);
    149         }
    150 
    151         System.out.println("
      2、判断字符串是否是数字格式~~~~~~~~~~~~~");
    152         String Snum = new String("889.092");
    153 
    154         if (IsNum(Snum)) { // 调用函数,也可以写HelloString.IsNum()
    155             System.out.println(Snum + "是数字格式");
    156         } else {
    157             System.out.println(Snum + "不是数字格式");
    158         }
    159 
    160         System.out.println("
      3、格式化字符串:日期格式化、时间格式化、日期/时间组合格式化等~~~~~~~~~~~~~");
    161         // format(String format,Object...args) 返回值都是一个格式化的字符串
    162         // format(Local 1,String format ,Object...args) local是否进行本地化
    163         // 日期格式化
    164         Date date = new Date();
    165         System.out.println("当前的日期是(未格式化):" + date);
    166         String x1 = String.format(Locale.CHINA, "%tb", date);
    167         String x2 = String.format(Locale.US, "%tb", date) + ":月份简称 
     ";
    168         String x3 = String.format(Locale.US, "%te", date) + ":一个月中的某一天 
    ";
    169         String x4 = String.format(Locale.US, "%tB", date) + ":月份全称 
     ";
    170         String x5 = String.format(Locale.US, "%ta", date) + ":指定环境的星期几简称
     ";
    171         String x6 = String.format(Locale.US, "%tA", date) + ":指定环境的星期几全称
    ";
    172         String x7 = String.format(Locale.US, "%tc", date) + ":包括全部日期和时间
     ";
    173         String x8 = String.format(Locale.US, "%tY", date) + ":四位年份
     ";
    174         String x9 = String.format(Locale.US, "%tj", date) + ":一年中的第几天
     ";
    175         String x10 = String.format(Locale.US, "%tm", date) + ":月份
     ";
    176         String x11 = String.format(Locale.US, "%td", date) + ":一个月中的第几天
     ";
    177         String x12 = String.format(Locale.US, "%ty", date) + ":两位年份
     ";
    178 
    179         System.out.println(x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10
    180                 + x11 + x12);
    181 
    182         // 时间格式化
    183         // 转换符:%tH %tI %tk %tl %tM %tS %tL %tN %tp %tz %tZ %ts %tQ
    184         String y1 = String.format("%tH", date) + ":两位数字的24小时制的小时(00~23)
     ";
    185         String y2 = String.format("%tI", date) + ":两位数字的12小时制的小时(01~12)
     ";
    186         String y3 = String.format("%tk", date) + ":两位数字的12小时制的小时(0~23)
     ";
    187         String y4 = String.format("%tl", date) + ":两位数字的12小时制的小时(1~12)
     ";
    188         String y5 = String.format("%tM", date) + ":两位数字的分钟
     ";
    189         String y6 = String.format("%tS", date) + ":两位数字秒数
     ";
    190         String y7 = String.format("%tL", date) + ":三位数字的毫秒数
     ";
    191         String y8 = String.format("%tN", date) + ":九位数字的微秒数
     ";
    192         String y9 = String.format("%tp", date) + ":指定语言环境的上午或下午标记 am 上午
     ";
    193         String y10 = String.format("%ts", date)
    194                 + ":1970-01-01 00:00:00到现在经过的秒数,即时间戳
     ";
    195         String y11 = String.format("%tQ", date)
    196                 + ":1970-01-01 00:00:00到现在经过的毫秒数
     ";
    197         String y12 = String.format("%tZ", date) + ":时区缩写形式的字符串
     ";
    198 
    199         System.out.println(y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8 + y9 + y10
    200                 + y11 + y12);
    201         // 日期时间组合格式化
    202         // 转换符:%tF %tD %tc %tr %tT %tR
    203         String z1 = String.format("%tF", date) + ":年-月-日 四位年份
     ";
    204         String z2 = String.format("%tD", date) + ":月/日/年 两位年份
     ";
    205         String z3 = String.format("%tc", date) + ":全部日期和时间信息
     ";
    206         String z4 = String.format("%tr", date) + ":时:分:秒 PM(AM) 12小时制
     ";
    207         String z5 = String.format("%tT", date) + ":时:分:秒 24小时制
     ";
    208         String z6 = String.format("%tR", date) + ":时:分  24小时制
     ";
    209         System.out.println(z1 + z2 + z3 + z4 + z5 + z6);
    210 
    211         // 常规类型格式化
    212         /***********************
    213          * *%b %B 格式化为布尔类型 
    214          * %h %H 格式化为散列码 
    215          * %s %S 格式化为字符串类型 
    216          * %c %C 格式化为字符类型 
    217          * %d  格式化为十进制整数 
    218          * %o 格式化为八进制整数
    219          * %x %X 格式化为十六进制整数 
    220          * %e 格式化为用科学计数法表示的十进制数     1.7000000e+01 
    221          * %a 格式化为带有交位数和指数的十六进制浮点值 0X1.C00000001P4 
    222          * %n 格式化为特定于平台的行分隔符 %% 字面值%
    223          */
    224 
    225         // 将金额格式化成大写,太难了,先放弃了~~
    226         // test
    227         String name = "sunshine.liu";
    228         String nameSub = name.substring(0, name.indexOf('.')); // 截取字符串
    229         int r = name.indexOf('.');
    230         System.out.println(nameSub + "
    " + r);
    231 
    232         // 将数字格式转换为货币格式
    233         Scanner scan = new Scanner(System.in);
    234         System.out.println("请输入一个数字,将数字格式转换为货币格式:");
    235         double money = scan.nextDouble();
    236         scan.close();// 关闭资源~~~
    237         System.out.println("Locale类的常量作为构造参数获得不同的货币格式:");
    238         NumberFormat format = NumberFormat.getCurrencyInstance(Locale.CHINA);
    239         System.out.println("Locale.CHINA 	" + format.format(money));
    240         format = NumberFormat.getCurrencyInstance(Locale.US);
    241         System.out.println("Locale.US 	" + format.format(money));
    242 
    243     }
    244 
    245     public static boolean IsNum(String str) {
    246 
    247         char[] c = str.toCharArray();
    248         for (int n = 0; n < c.length; n++) {
    249             if (Character.isDigit(c[n])) { // 判断字符是否是数字函数
    250             } else {
    251                 return false;
    252             }
    253         }
    254         return true;
    255     }
    256 }

    输出结果:

      1 终于到字符串这儿了,开始学习~~~
      2 
      3 一、创建字符串: 用双引号来声明*******************************
      4 good
      5 goodafternoon!
      6 afternoon
      7 
      8 二、字符串连接*******************************
      9 Hello World你好世界!
     10 我每天花40分钟跑步! 然后花8.77小时上班!
     11 
     12 三、获取字符串信息,长度、字符索引位置*******************************
     13 s5字符串"Hello World你好世界!"的长度是16
     14 字符o在字串s6:good morning的位置是1
     15 字符o在字串s6:good morning最后的位置是9
     16 字符空串在字串s6:good morning最后的位置是(与调用该字串的length()方法的返回结果相同!!)12
     17 
     18 四、获取指定索引位置的字符*******************************
     19 字符串s7"I have a dream"中索引位置是3的字符是:a
     20 
     21 五、去除字符串中的空格*******************************
     22 六、字符串替换    *******************************
     23 字串s8的长度是34;值是:     Captain America 3     , hoho!
     24 字串s8Trim的长度是29;去除前导尾部空格后的值是:Captain America 3     , hoho!
     25 这个可以直接循环的,用空格做为分隔符提取字符串:
     26 Captain
     27 CaptainAmerica
     28 CaptainAmerica3
     29 CaptainAmerica3,
     30 CaptainAmerica3,hoho!
     31 用StringTokenizer方法去掉s8所有空格之后的字符串是:CaptainAmerica3,hoho!
     32 用StringTokenizer方法去掉s8所有空格之后的字符串是:CaptainAmerica3,hoho!
     33 替换掉所有空格后:CaptainAmerica3,hoho!
     34 实在找不到替换哪个词了,嘿嘿...
     35 只替换查到的第一个词America后替换成chinese:     Captain Chinese 3     , hoho!
     36 
     37   七、判断字符串    *******************************
     38 s9.equals(anObject) 严格区分大小写的结果是:true
     39 str.equalsIgnoreCase(anotherString) 不区分大小写:true
     40 ==双等号比较的是内存位置,不适宜拿来比较字符串,可以比较数值:true
     41 angry birds!是否以字符串angry开始的:true
     42 是否以birds!结尾的:true
     43 Dreams Come True!全部转换成大写后:DREAMS COME TRUE!
     44 Dreams Come True!全部转换成小写后:dreams come true!
     45 按分割字符分割后的字符串是:
     46 meet
     47 classmate
     48 by
     49 chance
     50 
     51 happy
     52 everyday~
     53 
     54   1、根据指定分隔符把字符串分行~~~~~~~~~~~~~
     55 喜欢的话,按分隔符分开后:
     56 人是无法完全做到换位思考的
     57 因为思想、经历、感官、全都不一样
     58 就像我说大海很漂亮
     59 你却说淹死过很多人
     60 
     61 认清这世界
     62 然后爱它
     63 就这么一辈子
     64 下一世你可能就不再在这个世界了
     65 《龙猫》
     66 
     67   2、判断字符串是否是数字格式~~~~~~~~~~~~~
     68 889.092不是数字格式
     69 
     70   3、格式化字符串:日期格式化、时间格式化、日期/时间组合格式化等~~~~~~~~~~~~~
     71 当前的日期是(未格式化):Tue Jun 07 18:06:36 CST 2016
     72 六月Jun:月份简称 
     73  7:一个月中的某一天 
     74 June:月份全称 
     75  Tue:指定环境的星期几简称
     76  Tuesday:指定环境的星期几全称
     77 Tue Jun 07 18:06:36 CST 2016:包括全部日期和时间
     78  2016:四位年份
     79  159:一年中的第几天
     80  06:月份
     81  07:一个月中的第几天
     82  16:两位年份
     83  
     84 18:两位数字的24小时制的小时(00~23 85  06:两位数字的12小时制的小时(01~12 86  18:两位数字的12小时制的小时(0~23 87  6:两位数字的12小时制的小时(1~12 88  06:两位数字的分钟
     89  36:两位数字秒数
     90  299:三位数字的毫秒数
     91  299000000:九位数字的微秒数
     92  下午:指定语言环境的上午或下午标记 am 上午
     93  1465293996:1970-01-01 00:00:00到现在经过的秒数,即时间戳
     94  1465293996299:1970-01-01 00:00:00到现在经过的毫秒数
     95  CST:时区缩写形式的字符串
     96  
     97 2016-06-07:年-月-日 四位年份
     98  06/07/16:月/日/年 两位年份
     99  星期二 六月 07 18:06:36 CST 2016:全部日期和时间信息
    100  06:06:36 下午:时:分:秒 PM(AM) 12小时制
    101  18:06:36:时:分:秒 24小时制
    102  18:06:时:分  24小时制
    103  
    104 sunshine
    105 8
    106 请输入一个数字,将数字格式转换为货币格式:
    107 88.77
    108 Locale类的常量作为构造参数获得不同的货币格式:
    109 Locale.CHINA     ¥88.77
    110 Locale.US     $88.77
  • 相关阅读:
    【C语言】学习笔记5——指针(1)
    【C语言】学习笔记4——数组
    【leetcode】Contest98
    【Python】从0开始写爬虫——豆瓣电影
    C# WPF 文件复制,相对路径
    WPF DataGrid多表头/列头,多行头,合并单元格,一列占据多行
    WPF Image Source 设置相对路径图片
    WPF Blend 一个动画结束后另一个动画开始执行(一个一个执行)
    WPF 操作XML 读写
    WPF 选择电脑文件显示路径,弹出资源管理器,打开文件
  • 原文地址:https://www.cnblogs.com/sunshine-habit/p/5557302.html
Copyright © 2020-2023  润新知