Java定义字符串
不论使用哪种形式创建字符串,字符串对象一旦被创建,其值是不能改变的,但可以使用其他变量重新赋值的方式进行更改。
直接定义字符串
直接定义字符串是指使用双引号表示字符串中的内容,如:
- String str="Hello Java";
或者
- String str;
- str="Heilo Java";
字符串变量必须经过初始化才能使用。
使用 String 类定义
具体定义参考 String 类源码。
Java 字符串常用操作
字符串查找
根据字符查找
String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法。
1. indexOf() 方法
indexOf() 方法用于返回字符串在指定字符串中首次出现的索引位置,如果能找到,则返回索引值,否则返回 -1。该方法主要有两种重载形式:
- str.indexOf(value)
- str.indexOf(value,int fromIndex)
其中,str 表示指定字符串;value 表示待查找的字符串;fromIndex 表示查找时的起始索引,如果不指定 fromIndex,则默认从指定字符串中的开始位置(即 fromIndex 默认为 0)开始查找。
2. lastlndexOf() 方法
lastIndexOf() 方法用于返回字符串在指定字符串中最后一次出现的索引位置,如果能找到则返回索引值,否则返回 -1。该方法也有两种重载形式:
- str.lastIndexOf(value)
- str.lastlndexOf(value, int fromIndex)
注意:lastIndexOf() 方法的查找策略是从右往左查找,如果不指定起始索引,则默认从字符串的末尾开始查找。
根据索引查找
String 类的 charAt() 方法可以在字符串内根据指定的索引查找字符,该方法的语法形式如下:
字符串名.charAt(索引值)
获取子字符串
String 类的 substring() 方法用于对字符串进行提取,该方法主要有两种重载形式:
1. substring(int beginIndex) 形式
此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。例如:
- String str="我爱 Java 编程";
- String result=str.substring(3);
- System.out.println(result); //输出:Java 编程
2. substring(int beginIndex,int endIndex) 形式
此方法中的 beginIndex 表示截取的起始索引,截取的字符串中包括起始索引对应的字符;endIndex 表示结束索引,截取的字符串中不包括结束索引对应的字符,如果不指定 endIndex,则表示截取到目标字符串末尾。该方法用于提取位置 beginIndex 和位置 endIndex 位置之间的字符串部分。
这里需要特别注意的是, 对于开始位置 beginIndex, Java 是基于字符串的首字符索引为 0 处理的,但是对于结束位置 endIndex,Java 是基于字符串的首字符索引为 1 来处理的,如图 1 所示:
图1 字符串中的字符索引
注意:substring() 方法是按字符截取,而不是按字节截取。
去除空格
String 类提供 trim() 方法来去除字符串中多余空格。
trim() 方法的语法形式如下:
字符串名.trim()
如果不确定要操作的字符串首尾是否有空格,最好在操作之前调用该字符串的 trim() 方法去除首尾空格,然后再对其进行操作。
字符串替换
在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll():
replace() 方法
replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下:
字符串.replace(String oldChar, String newChar)
其中,oldChar 表示被替换的字符串;newChar 表示用于替换的字符串。replace() 方法会将字符串中所有 oldChar 替换成 newChar。
replaceFirst() 方法
replaceFirst() 方法用于将目标字符串中匹配某正则表达式的第一个子字符串替换成新的字符串,其语法形式如下:
字符串.replaceFirst(String regex, String replacement)
其中,regex 表示正则表达式;replacement 表示用于替换的字符串。
replaceAll() 方法
replaceAll() 方法用于将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串,其语法形式如下:
字符串.replaceAll(String regex, String replacement)
其中,regex 表示正则表达式,replacement 表示用于替换的字符串。
public static void main(String[] args) { //定义原始字符串 String intro="今天时星其天,外面时下雨天。妈米去买菜了,漏网在家写作业。"+"语文作业时”其”写 5 行,数学使第 10 页。"; //将文本中的所有"时"和"使"都替换为"是" String newStrfirst=intro.replaceAll("[时使]","是"); //将文本中的所有"妈米"改为"妈妈" String newStrSecond=newStrFirst.replace("米","妈"); //将文本中的所有"漏网"改为"留我" String newStrThird=newStrSecond.replaceAll("漏网","留我"); //将文本中第一次出现的"其"改为"期" String newStrFourth=newStrThird.repiaceFirst("[其]","期"); //输出最终字符串 System.out.println(newStrFourth); }
运行该程序,输出的正确字符串内容如下: 今天是星期天,外面是下雨天。妈妈去买菜了,留我在家写作业。语文作业是”其”写 5 行,数学是第 10 页。
StringBuffer 类的 setCharAt() 方法
用于在字符串的指定索引位置替换一个字符,索引从0开始。该方法的语法格式如下:
StringBuffer 对象.setCharAt(int index, char ch);
判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定内容开始或结束。这两个方法的返回值都为boolean类型。
1、startsWith(String prefix)
该方法用于判断当前字符串对象的前缀是否是参数指定的字符串。
2、endsWith(String suffix)
该方法用于判断当前字符串是否以给定的子字符串结束
判断字符串是否相等
在 Java 中,比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。
equals() 方法
equals() 方法将逐个地比较两个字符串的每个字符是否相同。对于字符的大小写,也在检查的范围之内。语法格式如下:
字符串1.equals(字符串2);
equalsIgnoreCase() 方法
equalsIgnoreCase() 方法的作用和语法与 equals() 方法完全相同,唯一不同的是 equalsIgnoreCase() 比较时不区分大小写。
compareTo() 方法
compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值。语法格式如下:
str.compareTo(String otherstr);
它会按字典顺序将 str 表示的字符序列与 otherstr 参数表示的字符序列进行比较。如果按字典顺序 str 位于 otherster 参数之前,比较结果为一个负整数;如果 str 位于 otherstr 之后,比较结果为一个正整数;如果两个字符串相等,则结果为 0。
如果两个字符串调用 equals() 方法返回 true,那么调用 compareTo() 方法会返回 0。
字母大小写转换
String 类的 toLowerCase() 方法可以将字符串中的所有字符全部转换成小写,而非字母的字符不受影响。语法格式如下:
字符串名.toLowerCase() //将字符串中的字母全部转换为小写,非字母不受影响
toUpperCase() 则将字符串中的所有字符全部转换成大写,而非字母的字符不受影响。语法格式如下:
字符串名.toUpperCase() //将字符串中的字母全部转换为大写,非字母不受影响
字符串分割
String 类的 split() 方法可按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。有如下两种重载形式:
- str.split(String sign)
- str.split(String sign,int limit)
其中,str 为需要分割的目标字符串;sign 为指定的分割符,可以是任意字符串;limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止。
字符串连接
1、“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。只要“+”运算符的一个操作数是字符串,编译器就会将另一个操作数转换成字符串形式,所以应该谨慎地将其他数据类型与字符串相连,以免出现不符要求的结果。
2、在 Java 中,String 类的 concat() 方法实现了将一个字符串连接到另一个字符串的后面。语法格式如下:
字符串 1.concat(字符串 2);
concat() 方法一次只能连接两个字符串,如果需要连接多个字符串,需要调用多次 concat() 方法。
3、使用StringBuffer类的append()方法,追加内容到当前 StringBuffer 对象的末尾;语法格式如下:
StringBuffer 对象.append(String str)
文章中若有不得当之处请留言指出,谢谢!