十八、其他字符串常用方法(一)

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);

str1str2 可以是字符串变量, 也可以是字符串字面量。

下面的代码说明了 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-Za-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/