JavaSE String篇


Stirng的常用方法

  • JavaSE String篇
  • 前言
  • 一、String 常用方法
  • 1. 1、trim()方法
  • 1.2、replaceAll() 方法
  • 1.2.1、"\\s+"作用
  • 1.3、split()分割
  • 1.3.1、拓展:除了spilt()的另一种方法可以将一个包含多个值的字符串拆分并存储到集合中
  • 1.4、replace()
  • 1.5、 Java中字符串的占位符拼接——format()
  • 1.5.1 方式二:MessageFormat.tormat()
  • 1.6、 substring()
  • 1.6.1 substring() 下标位置说明
  • 示例
  • 1.7、 indexof()
  • 总结


前言

在Java编程中,String是一个非常重要的类。无论是Java SE、Java EE还是Android开发,都离不开对String类的使用。本文将对Java SE中的String类进行详细的介绍,包括基本概念、常用方法以及注意事项等方面,希望能够帮助初学者更好地理解和掌握这一关键类的使用。同时,也能够为有一定Java基础的开发人员提供一些实用的技巧和建议,让大家能够更加高效地开发出优秀的Java应用程序。

一、String 常用方法

1. 1、trim()方法

Java 字符串方法,它的作用是去除字符串开头和结尾处的空格字符或其他 Unicode 字符,并返回新的字符串。在实际编程中,我们经常需要去除字符串首尾的空格字符,以确保输入正确性。

示例代码:

示例1:

String name = "   Tom  ";
String trimmedName = name.trim();
System.out.println(trimmedName); // 输出 "Tom"

在上述代码中,原始字符串 name 包含了开头和结尾处的空格字符,通过调用 name.trim() 方法,得到去除空格字符后的字符串 “Tom”,并将其赋值给变量 trimmedName。最后输出 trimmedName 的值,结果为 “Tom”。

示例2:

String str = "   Hello World!    ";
String trimmedStr = str.trim(); // "Hello World!"

注意 :trim() 方法只会去除开头和结尾处的空格字符,而不会去除字符串中间的空格字符。如果需要去除中间的空格字符,可以使用 replaceAll() 方法或者其他相关的字符串处理方法。
那么该怎么去除中间的空格呢?

1.2、replaceAll() 方法

使用 replaceAll() 方法去除字符串中间的空格字符:

示例1:

String str = "Hello    World";
str = str.replaceAll("\\s+", "");
System.out.println(str); // 输出:HelloWorld

在这个示例中,我们首先定义了一个字符串 str,它包含多个空格字符。然后我们使用 replaceAll() 方法,传入匹配多个连续空格字符的正则表达式 “\s+” 和替换为空字符串的字符串 “”,这样就将字符串中间的所有空格字符都去除掉了。最后输出结果为 HelloWorld。

1.2.1、"\s+"作用

\s+ 是一个正则表达式,表示匹配一个或多个空格字符。这里的 \s 表示空格字符,包括普通空格、制表符、换行符等所有的空白符号;而 + 表示匹配前面的元素一次或多次。

因此,\s+ 可以匹配一个或多个连续的空格字符。在使用 replaceAll() 方法时,将匹配到的字符串替换为空字符串 “”,就可以实现去除字符串中间的空格字符的功能。

1.3、split()分割

使用Java中的split()方法将字符串按照指定的分隔符进行拆分,并将它们存储到一个数组中。然后,可以使用Arrays.asList()方法将数组转换为集合。

示例1:

String name = "张三,李四,王五,麻六";
String[] values = name.split(",");
List<String> list = Arrays.asList(values);

在这个例子中,我们首先定义了一个包含逗号分隔符的字符串name。然后,我们使用split()方法将其拆分为一个字符串数组values。最后,我们使用Arrays.asList()方法将数组转换为一个List对象list。现在,你可以使用list对象来访问每个单独的值。

1.3.1、拓展:除了spilt()的另一种方法可以将一个包含多个值的字符串拆分并存储到集合中

使用java.util.Scanner类。Scanner类提供了一个方便的方式来解析和分离输入数据

示例1:

String name = "张三,李四,王五,麻六";
List<String> list = new ArrayList<>();
try (Scanner scanner = new Scanner(name).useDelimiter(",")) {
    while (scanner.hasNext()) {
        String value = scanner.next().trim();
        list.add(value);
    }
}

示例中,我们首先定义了一个包含逗号分隔符的字符串name。然后,创建了一个空的ArrayList对象list。接下来,使用Scanner类对字符串进行扫描,并使用逗号作为分隔符。在while循环中,我们使用Scanner的hasNext()方法检查是否还有更多的元素需要读取。如果有,使用next()方法从Scanner中获取下一个元素,并使用trim()方法删除任何前导或尾随空格。最后,将每个值添加到list对象中。

在本示例代码中,使用了try-with-resources语句来自动关闭Scanner对象。这样做可以确保资源被及时地释放,而不会引起内存泄漏或其他问题。

1.4、replace()

replace 方法可以用于替换字符串中的指定字符序列或字符。它有两种形式:

  1. replace(char oldChar, char newChar) - 将字符串中所有出现的 oldChar 替换为 newChar
  2. replace(CharSequence target, CharSequence replacement) - 将字符串中所有出现的
    target替换为 replacement
    注意:replace 方法返回一个新的字符串对象,而不是修改原始字符串。
    下面举例演示:
String str = "hello world";
String newStr1 = str.replace('o', 'a');	 // "hella warld"
String newStr2 = str.replace("world", "Java"); // "hello Java"

另外需要注意的是,在第二种形式中,target 和 replacement 参数都应该是 CharSequence 类型,因此可以传入 String 对象或其他实现了 CharSequence 接口的对象。
关于CharSequence接口:
CharSequence 是一个接口(interface)类型,它定义了一组字符序列的操作方法。在 Java 编程语言中,字符串(String)就是 CharSequence 的一个实现。除了 String 类以外,还有其他类也可以实现 CharSequence 接口,比如 StringBuffer 和 StringBuilder 等。使用 CharSequence 接口类型作为方法参数或返回值,可以让方法接受任何实现了该接口的对象,增强代码的灵活性和可重用性。
它扩展了java.lang.CharSequence类并定义了以下方法:

char charAt(int index): 返回指定索引处的字符。 int length(): 返回字符序列的长度。
CharSequence subSequence(int start, int end):
返回一个新的CharSequence对象,它包含此字符序列的子序列。 String toString(): 返回此字符序列本身。

该接口主要用于处理和操作文本数据,它可以用来表示不可变的字符序列,例如字符串。由于CharSequence接口是只读的,因此它不能用于修改字符串内容或添加新的字符串数据。

1.5、 Java中字符串的占位符拼接——format()

public static void main(String[] args) {
String s = "%s 和%s的 %s 一刻也不能 %s,无论 %s 走到那里 ,都留下一首赞歌
String format = String.format(s, "我", "我","祖国","分隔","我","多余的")
System.out.println(format);
sout:我和我的祖国一刻也不能分隔,无论我走到那里,都留下一首赞歌

1.5.1 方式二:MessageFormat.tormat()

public static void main(String[ args) {
String s = " {0}和我的{1}一刻也不能{2}无论{0}走到那里,都留下一首赞歌"。
String format = MessageFormat.format(s, "我", "祖国", "分割","注意:多余的部分"}
System.out.println(format);
sout:我和我的祖国一刻也不能分隔,无论我走到那里,都留下一首赞歌

1.6、 substring()

substring() 方法是用于截取字符串中指定部分的子串。
它有两个重载形式:

substring(int beginIndex):从 beginIndex 位置开始截取到字符串末尾; substring(int
beginIndex, int endIndex):从 beginIndex 位置开始截取到 endIndex-1位置。
其中,beginIndex 表示截取的子串起始位置的索引(包含该位置),endIndex 表示截取的子串结束位置的索引(不包含该位置)。

1.6.1 substring() 下标位置说明

在 Java 中,字符串的下标从 0 开始。也就是说,字符串中第一个字符的下标为 0,第二个字符的下标为 1,以此类推。例如,给定字符串 “hello”,它的下标分别如下:

+---+---+---+---+---+
| h | e | l | l | o |
+---+---+---+---+---+
  0   1   2   3   4

因此,当使用 substring() 方法截取子串时,起始位置 beginIndex 和结束位置 endIndex 的下标都是从 0 开始计算的。

示例

当使用 str.substring(0,6).trim() 时,表示从字符串的第0个字符开始截取到第5个字符(不包含第6个字符),即截取 "hello " 这个子串。然后使用 .trim() 去掉字符串首尾的空格。因此,整个表达式的结果是 “hello”。

String str = "hello world";
String result = str.substring(0,6).trim();
System.out.println(result);
输出结果为:
hello

1.7、 indexof()

indexOf方法是用于查找一个字符或子字符串第一次出现的位置。它是String类的一个成员方法,可以用于任何字符串对象。该方法有多个重载形式,其中最常用的形式接受一个字符串或字符作为参数,并返回第一次出现该字符串或字符的索引位置。如果没有找到该字符串或字符,则返回-1。
示例:

String str = "Hello world";
int index = str.indexOf("world");
System.out.println("Index of 'world' in 'Hello world': " + index); 
sout: Index of 'world' in 'Hello world': 6