十八、其他字符串常用方法(一)
1 获取字符串长度
在 Java 中,要获取字符串的长度,可以使用 String
类的 length()
方法,其语法形式如下:
字符串名.length();
例 1
在学生信息管理系统中对管理员密码有这样的规定,即密码长度必须大于 6 位且小于 12 位。因为密码太短容易被破解,太长的话又不容易记住。这就需要首先获取用户输入的密码字符串,然后调用 length()
方法获取长度,再做进一步的长度判断,最终实现代码如下所示:
public static void main(String[] args) {
String sys = "学生信息管理";// 字义一个字符串表示系统名称
System.out.println("欢迎进入《" + sys + "》系统");// 输出系统名称
System.out.println("请设置一个管理员密码:");
Scanner input = new Scanner(System.in);
String pass = input.next();// 获取用户输入的密码
int length = pass.length();// 获取密码的长度
if (length > 6 && length < 12) {
System.out.println("密码长度符合规定。");
System.out.println("已生效,请牢记密码:" + pass);
} else if (length >= 12) {
System.out.println("密码过长。");
} else {
System.out.println("密码过短。");
}
}
2 字符串大小写转换
String
类的 toLowerCase()
方法可以将字符串中的所有字符全部转换成小写,而非字母的字符不受影响。语法格式如下:
字符串名.toLowerCase() // 将字符串中的字母全部转换为小写,非字母不受影响
toUpperCase()
则将字符串中的所有字符全部转换成大写,而非字母的字符不受影响。语法格式如下:
字符串名.toUpperCase() // 将字符串中的字母全部转换为大写,非字母不受影响
例如:
String str="abcdef 我 ghijklmn";
System.out.println(str.toLowerCase()); // 输出:abcdef 我 ghijklmn
System.out.println(str.toUpperCase()); // 输出:ABCDEF 我 GHIJKLMN
3 去除字符串中的首尾空格
字符串中存在的首尾空格一般情况下都没有任何意义,如字符串“ Hello ”
,但是这些空格会影响到字符串的操作,如连接字符串或比较字符串等,所以应该去掉字符串中的首尾空格,这需要使用 String
类提供的 trim()
方法。
trim()
方法的语法形式如下:
字符串名.trim()
使用 trim()
方法的示例如下:
String str = " hello ";
System.out.println(str.length()); // 输出 7
System.out.println(str.trim().length()); // 输出 5
注意:
trim()
只能去掉字符串中前后的半角空格(英文空格),而无法去掉全角空格(中文空格)。可用以下代码将全角空格替换为半角空格再进行操作,其中替换是String
类的replace()
方法
4 截取(提取)子字符串
在 String
中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。
4.1 substring(int beginIndex) 形式
此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。例如:
String str = "我爱 Java 编程";
String result = str.substring(3);
System.out.println(result); // 输出:Java 编程
4.2 substring(int beginIndex,int endIndex) 形式
此方法中的 beginIndex
表示截取的起始索引,截取的字符串中包括起始索引对应的字符;endIndex
表示结束索引,截取的字符串中不包括结束索引对应的字符。该方法用于提取位置 beginIndex 和位置 endIndex 位置之间的字符串部分。
String str = "我爱 Java 编程";
String result = str.substring(3, 7);
System.out.println(result); // 输出:Java
5 判断字符串相同
5.1 equals() 方法
equals()
方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相同的字符和长度,它返回 true
,否则返回 false
。对于字符的大小写,也在检查的范围之内。equals()
方法的语法格式如下:
str1.equals(str2);
str1
和 str2
可以是字符串变量, 也可以是字符串字面量。
下面的代码说明了 equals()
方法的使用:
String str1 = "abc";
String str2 = new String("abc");
String str3 = "ABC";
System.out.println(str1.equals(str2)); // 输出 true
System.out.println(str1.equals(str3)); // 输出 false
5.2 equalsIgnoreCase() 方法
equalsIgnoreCase()
方法的作用和语法与 equals()
方法完全相同,唯一不同的是 equalsIgnoreCase()
比较时不区分大小写。当比较两个字符串时,它会认为 A-Z
和 a-z
是一样的。
下面的代码说明了 equalsIgnoreCase()
的使用:
String str1 = "abc";
String str2 = "ABC";
System.out.println(str1.equalsIgnoreCase(str2)); // 输出 true
5.3 equals()与==的比较
理解 equals()
方法和 ==
运算符执行的是两个不同的操作是重要的。如同刚才解释的那样,equals()
方法比较字符串对象中的字符。而==
运算符比较两个对象引用看它们是否引用相同的实例。
下面的程序说明了两个不同的字符串(String
)对象是如何能够包含相同字符的,但同时这些对象引用是不相等的:
String s1 = "Hello";
String s2 = new String(s1);
System.out.println(s1.equals(s2)); // 输出true
System.out.println(s1 == s2); // 输出false
6 判断字符串开头结尾是否为指定字符串
判断字符串是否以 prefix 为前缀:
public boolean startsWith(String prefix)
判断字符串是否以 suffix 为后缀:
public boolean endsWith(String suffix)
7 字符串查找
在给定的字符串中查找字符或字符串是比较常见的操作。字符串查找分为两种形式:一种是在字符串中获取匹配字符(串)的索引值,另一种是在字符串中获取指定索引位置的字符。
7.1 indexOf() 方法
indexOf()
方法用于返回字符(串)在指定字符串中首次出现的索引位置,如果能找到,则返回索引值,否则返回 -1。该方法主要有两种重载形式:
str.indexOf(value)
str.indexOf(value,int fromIndex)
其中,str
表示指定字符串;value
表示待查找的字符(串);fromIndex
表示查找时的起始索引,如果不指定 fromIndex
,则默认从指定字符串中的开始位置(即 fromIndex
默认为 0)开始查找。
例如,下列代码在字符串 “Hello Java” 中查找字母 v 的索引位置。
String s = "Hello Java";
int size = s.indexOf('v'); // size的结果为8
7.2 lastlndexOf() 方法
lastIndexOf()
方法用于返回字符(串)在指定字符串中最后一次出现的索引位置,如果能找到则返回索引值,否则返回 -1。该方法也有两种重载形式:
str.lastIndexOf(value)
str.lastlndexOf(value, int fromIndex)
注意:lastIndexOf() 方法的查找策略是从右往左查找,如果不指定起始索引,则默认从字符串的末尾开始查找。
7.3 查找索引位置的字符
String
类的 charAt()
方法可以在字符串内根据指定的索引查找字符,该方法的语法形式如下:
字符串名.charAt(索引值)
提示:字符串本质上是字符数组,因此它也有索引,索引从零开始。
charAt()
方法的使用示例如下:
String words = "today,monday,sunday";
System.out.println(words.charAt(0)); // 结果:t
System.out.println(words.charAt(1)); // 结果:o
System.out.println(words.charAt(8)); // 结果:n
主要参考内容来源:http://c.biancheng.net/