java编程入门7 字符串
1.String类
1.String类的常用构造方法
1)String(); 初始化新创建的 String对象,使其表示空字符序列。
2)String(byte[] bytes); 通过byte数组构造字符串对象
3)String(byte[] bytes,int offset,int length);通过byte数组,从offset开始,长度为length的字节构造字符串对象
4)String(char[] value); 通过char数组构造字符串对象
5)String(char[] value,int offset,int length);通 过char数组,从offset开始,长度为length的字符构造字符串对象
2.连接字符串
1.使用"+"运算符可实现连接多个字符串的功能。
2.字符串同其他基本数据类型进行连接,会将这些数据直接转换为字符串对象。(当他们与字符串相连时会自动调用toString()方法,将其转换成字符串形式,参与连接)
3.获取字符串信息
1.length()方法可以获取字符串对象的长度
str.length();
2.字符串查找
1)indexOf()方法返回搜索的字符或字符串首次出现的位置
如果没有检索到字符串str,则方法返回-1
str.indexOf(substr)
2)lastIndexOf()方法返回搜索的字符或字符串最后一次出现的位置
如果没有检索到字符串str,则方法返回-1
str.lastIndexOf(substr)
如果lastIndexOf()方法中的参数是空字符串"",则返回该字符串的长度。
3.charAt(int index)方法获取指定索引位置的字符
str.charAt(int index)
4.字符串操作
1.获取子字符串
通过substring()方法可对字符串进行截取,利用字符串的下标进行截取,且应明确字符串下标是从0开始
1)substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串
str.substring(int beginIndex)
2)substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串(结束位置不算)
str.substring(int beginIndex,int endIndex)
2.去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格
3.字符串替换
replace()方法可以实现将指定的字符替换成新的字符或将指定的字符串替换成新的字符串
str.replace(char oldChar,char newChar) str.repace(String oldStr,String newStr)
4.判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否是以指定内容开始或结束,这两个方法的返回值都为boolean类型。
1)startsWith() 判断当前字符串对象的前缀是否为参数指定的字符串
str.startsWith(String prefix)
2)endsWith() 判断当前字符串是否为以给定的子字符串结束
str.endsWith(String suffix)
5.判断字符串是否相等
对字符串对象进行比较不能简单的使用运算符"==",因为比较运算符比较的是两个字符串的地址是否相同,
1)equals()方法
如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true
str.equals(String otherstr)
2)equalsIgnoreCase()方法
使用equalsIgnoreCase()方法是在忽略大小写的情况下比较两个字符串是否相等
str.equalsIgnoreCase(String otherstr)
6.按字典顺序比较两个字符串
使用compareTo()方法按字典顺序比较两个字符串。如果按字典顺序此String对象位于参数字符串之前(小于),则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果两个字符串相等,则结果为0。
7.字母大小写转换
1)toLowerCase()方法
该方法将String转换为小写
str.toLowerCase()
2)toUpperCase()方法
该方法将String转换为大写
str.toUpperCase()
使用toLowerCase()方法和toUpperCase()方法进行大小写转换时,数字和非字符不受影响
8.字符串分割
使用split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中,
1)split(String sign)
str.split(String sign)
其中sign为分割字符串的分割符,也可以使用正则表达式
如果想定义多个分割符,可使用符号"|"
"."、"|"、"+"、"*"都是转义字符必须得加"\"
"\"为分割符时也需要加上"\"并且"\"需要变成转义字符"\"
public class Text{ public static void main(String[] args) { /* String str="192\\168\\0\\1"; String[] firstArray=str.split("\\\\"); for(int i=0;i<firstArray.length;i++) { System.out.println(firstArray[i]); } */ String str="192.168.0.1"; String[] firstArray=str.split("\\."); for(int i=0;i<firstArray.length;i++) { System.out.println(firstArray[i]); } } }
2)split(String sign,int limit)
limit表示最多被分割为的子字符串的个数
5.格式化字符串
1.创建格式化字符串
String类的静态方法format()方法用于创建格式化的字符串。
1)format(String format,Object...args)
该方法使用指定的格式字符串和参数,返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境
format:格式字符串
args:格式字符串中由格式说明符引用的参数。
2)format(Local l,String format,Object...args)
l:格式化过程中要应用的语言环境
2.日期和时间字符串格式化
format()方法通过给定的特殊转换符作为参数来实现对日期和时间的格式化
1)日期格式化
常用的日期格式化转换符
转换符 | 说明 |
%te | 一个月中的某一天(1~31) |
%tb | 指定语言环境下的月份简称 |
%tB | 指定语言环境下的月份全称 |
%ta | 指定语言环境下的星期简称 |
%tA | 指定语言环境下的星期全称 |
%tc | 包括全部日期和时间信息 |
%ty | 二位年份 |
%tY | 四位年份 |
%tj | 一年中的第几天(001~366) |
%tm | 月份 |
%td | 一个月中的第几天(01~31) |
Date date=new Date(); String str= String.format("%tc", date); System.out.println(str);
2)时间格式化
时间格式化转换符
转换符 | 说明 |
%tH | 2位数字的24时制的小时(00~23) |
%tI | 2位数字的12时制的小时(01~12) |
%tk | 2位数字的24时制的小时(0~23) |
%tl | 2位数字的12时制的小时(1~12) |
%tM | 2位数字的分钟(00~59) |
%tS | 2位数字的秒数(00~60) |
%tL | 3位数字的毫秒数 |
%tN | 9位数字的微秒数 |
%tp | 指定语言环境下上午或下午标记 |
%tz | 相对于GMT RFC 82格式的数字时区偏移量 |
%tZ | 时区缩写形式的字符串 |
%ts | 1970-01-01 00:00:00至现在经过的秒数 |
%tQ | 1970-01-01 00:00:00至现在经过的毫秒数 |
3)格式化常见的日期时间组合
常见的日期和时间组合的格式
转换符 | 说明 |
%tF | "年-月-日"格式(4位年份) |
%tD | "月/日/年"格式(2位年份) |
%tc | 全部日期和时间信息 |
%tr | "时:分:秒 PM(AM)"格式(12时制) |
%tT | "时:分:秒"格式(24时制) |
%tR | "时:分"格式(24时制) |
3.常规类型格式化
常规类型的格式化可应用于任何参数类型
常规转换符
转换符 | 说明 |
%b %B | 结果被格式化为布尔类型 |
%h %H | 结果被格式化为散列码 |
%s %S | 结果被格式化为字符串类型 |
%c %C | 结果被格式化为字符类型 |
%d | 结果被格式化为十进制整数 |
%o | 结果被格式化为八进制整数 |
%x %X | 结果被格式化为十六进制整数 |
%e | 结果被格式化为用计算机科学计数法表示的十进制数 |
%a | 结果被格式化为带有效位数和指数的十六进制浮点数 |
%n | 结果为特定于平台的行分隔符 |
%% | 结果为字面值'%' |
6.正则表达式
正则表达式通常被用于判断语句中,用于检查某一字符串是否满足某一格式
1.元字符
自行百度
注:在正则表达式中"."代表任意字符,因此在正则表达式中如果想要使用普通意义的点字符".",必须使用转义字符"\"
2.限定修饰符
限定修饰符 | 意义 |
? | 0次或1次 |
* | 0次或多次 |
+ | 一次或多次 |
{n} | 正好出现n次 |
{n,} | 至少出现n次 |
{n,m} | 出现n~m次 |
String regex ="\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}"; String str="123456789@qq.com"; if(str.matches(regex)) { System.out.println(str+"是一个合法的Emile地址格式"); }
7.字符串生成器
创建成功的字符串对象,其长度是固定的,内容不能被改变或编译。虽然使用"+"可以达到附加新字符或字符串的目的,但"+"会产生一个新的String实例,会在内存中创建新的字符串对象,如果重复的对字符串进行修改,将极大的增大系统开销。而J2SE 5.0新增了可变字符序列String-Builder类,大大提高了频繁增加字符串的效率。
1)append()方法
向字符串生成器中追加内容,可以接受任何类型的数据。
2)insert(int offset,arg)方法
向字符串生成器中的指定位置插入数据内容
3)delete(int start,int end)方法
移除此序列子字符串中的字符,该子字符串从指定的start处开始,一直到索引end-1处的字符,如果不存在这种字符,则一直到序列尾部
StringBuilder bf=new StringBuilder("hello"); bf.insert(0, "word"); System.out.println(bf.toString());