Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式

时间:2023-06-28 20:05:07

一、String类一般字符串

  • 声明字符串

>>String str

  • 创建字符串

>>String(char a[])方法用于将一个字符数组创建为String对象

>>String(char a[],int offset,int length)方法用于提取字符数组a中的一部分创建一个字符串对象,参数offset表示开始截取字符串的位置,length表示截取字符串的长度

>>String(char a[] value)方法可用于分配一个新的String对象,使其表示字符数组参数中所有对象连接的结果

  • 连接字符串

>>使用“+”运算符可以实现连接多个字符串的功能,也可以连接多个运算符并产生一个String对象

>>使用“+”运算符也可同其他基本数据类型进行连接,将其他数据类型转换为字符串

  • 获取字符串信息

>>使用String类的length()方法可获取声明的字符串对象的长度

  • 字符串查找

>>indexOf(String s)方法用于返回参数字符串s在指定字符串中首次出现的索引位置。当执行该方法时会从字符串开始位置搜索s的位置,如果没有检索到字符串s,该方法的返回值是-1

>>lastIndexOf(String str)方法用于返回指定字符串最后一次出现的索引位置,调用过程与indexOf()相同

  • 获取指定索引位置的字符

>>charAt(int index)方法可将指定索引位置的字符返回

  • 获取子字符串

>>substring(int beginIndex)方法用于获取从指定索引位置开始截取到该字符串结尾的子串

>>substring(int beginIndex,int endIndex)方法用于获取从指定位置开始截取至某一索引位置结束的子串

  • 去除空格

>>trim()方法返回字符串的副本,忽略前导空格和尾部空格

  • 字符串替换

>>replace(char oldChar,char newChar)方法可将指定的字符或字符串替换成新的字符或字符串,如果没有目标字符串,则返回原字符串

  • 判断字符串的开始与结尾

>>startsWith(String prefix)方法与endsWith(String suffix)方法用于判断字符串是否以指定的内容开始或结束,返回值都为boolean类型

  • 判断字符串是否相等

>>“==”用于比较两个字符串的地址是否相同,即使内容长度完全一致,两个字符串的地址也可能不同

>>equals(String otherstr)方法用于比较两个字符串的内容和长度,完全相同时返回true

>>equalsIgnoreCase(String otherstr)方法用于比较两个忽略大小写的字符串的内容和长度,完全相同时返回true

  • 按字典顺序比较两个字符串

>>compareTo(String otherstr)方法会按照字典顺序比较两个字符串。从两个字符串的第一位开始比较,如果两个字符串第一位的字符相同,则继续向后比较,直至出现不同的字符为止。若比较到最后一位都相同(即equals(object)方法返回值为true),则结果为0;若不同,该String对象位于参数字符串之前,则比较结果为一个负整数,反之则为一个正整数

  • 字母大小转换

>>toLowerCase()方法用于将字符串转换为小写

>>toUpperCase()方法用于将字符串转换为大写

  • 字符串分割

>>split(String sign)方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中

>>split(String sign,int limit)方法作用与上相同,但可以限定拆分次数

二、日期和时间字符串格式化

  • 日期格式化
常用的日期格式化转换符
转换符 说明 示例
%te 一个月中的某一天(1~31) 2
%tb 指定语言环境的月份简称 Feb(英文)、二月(中文)
%tB 指定语言环境的月份全程 February(英文)、二月(中文)
%tA 指定语言环境的星期几全称 Monday(英文)、星期一(中文)
%ta 指定语言环境的星期几简称 Mon(英文)、星期一(中文)
%tc 包括全部日期和时间信息 星期二 三月 25 13:37:22 CST 2008
%tY 4位年份 2008
%tj 一年中的第几天(001~366) 085
%tm 月份 03
%td 一个月中的第几天(01~31) 02
%ty 2位年份 08
  • 时间格式化
时间格式化转换符
转换符 说明 示例
%tH 2位数字的24时制的小时(00~23) 14
%tI 2位数字的12时制的小时(01~12) 05
%tk 2位数字的24时制的小时(0~23) 5
%tl 2位数字的12时制的小时(1~12) 10
%tM 2位数字的分钟(00~59) 05
%tS 2位数字的秒数(00~60) 12
%tL 3位数字的毫秒数(000~999) 920
%tN 9位数字的微妙数(000000000~999999999) 062000000
%tp 指定语言环境的上午或下午标记 下午(中文)、pm(英文)
%tz 相对于GMT RFC 82 格式的数字时区偏移量 +0800
%tZ 时区缩写形式的字符串 CST
%ts 1970-01-01 00:00:00 至现在经过的秒数 1206426646
%tQ 1970-01-01 00:00:00 至现在经过的毫秒数 1206412131231
  • 格式化常见的日期时间组合
常见的日期和时间组合的格式
转换符 说明 示例
%tF “年-月-日”格式(4位年份) 2008-03-25
%tD “月/日/年”格式(2位年份) 03/25/08
%tc 全部日期和时间信息 星期二 三月 25 15:20:00 CST 2008
%tr “时:分:秒 PM(AM)”格式(12时制) 03:22:06 下午
%tT “时:分:秒”格式(24时制) 15:23:50
%tR “时:分”格式(24时制) 15:25

三、常规类型格式化

常规转换符
转换符 说明 示例
%b、%B 结果被格式化为布尔类型 true
%h、%H 结果被格式化为散步码 A05A5198
%s、%S 结果被格式化为字符串类型 "abcd"
%c、%C 结果被格式化为字符类型 'a'
%d 结果被格式化为十进制整数 40
%o 结果被格式化为八进制整数 11
%x、%X 结果被格式化为十六进制整数 4b1
%e 结果被格式化为用计算机科学计数法表示的十进制数 1.700000e+01
%a 结果被格式化为带有效位数和指数的十六进制浮点值 0X1.C000000000001P4
%n 结果为特于与平台的行分隔符  
%% 结果为字面值% %

四、正则表达式

>>正则表达式通常被用于判断语句是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符统称为正则表达式的元字符

正则表达式中的元字符
元字符 正则表达式中的写法 意义
. . 代表任意一个字符
\d \\d 代表0~9的任何一个数字
\D \\D 代表任何一个非数字字符
\s \\s 代表空白字符,如'\t'、'\n'
\S \\S 代表非空白字符
\w \\w 代表可用作标识符的字符,但不包括“$”
\W \\W 代表不可用作标识符的字符
\p{Lower} \\p{Lower} 代表小写字母a~z
\p{Upper} \\p{Upper} 代表大写字母A~Z
\p{ASCII} \\p{ASCII} ASCII字符
\P{Alpha} \\P{Alpha} 字母字符
\p{Digit} \\p{Digit} 十进制数字,即0~9
\p{Alnum} \\p{Alnum} 数字或字母字符
\p{Punct} \\p{Punct} 标点符号:!"#$%&'()*+,-;:<=>?@[\]^_`{|}~
\p{Graph} \\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} \\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} \\p{Blank} 空格或制表符:[\t]
\p{Cntrl} \\p{Cntrl} 控制字符:[\x00-\x1F\x7F]

>>限定修饰符用于限定正则表达式中元字符出现的次数

限定修饰符
限定修饰符 意义 示例
? 0次或1次 A?
* 0次或多次 A*
+ 1次或多次 A+
{n} 正好出现n次 A{2}
{n,} 至少出现n次 A{3,}
{n,m} 出现n~m次 A{2,6}

>>使用matches(String regex)方法来进行正则表达式匹配

五、StringBuilder类

>String类创建的对象,其长度是固定的,内容不能被改变和编译,虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,在内存中创建新的字符串对象。为解决这个问题,系统引入了可变的字符序列StringBuilder类,大大提高了频繁增加字符串的效率

>>append(content)方法用于向字符串生成器中追加内容,可实现接受任何类型的数据

>>insert(int offset arg)方法用于向字符串生成器指定位置插入数据内容

>>delete(int start,int end)方法用于移除指定位置开始到某一位置结束的字符串