Java:字符串操作函数

93°C 03-01-2025 notbyai
最近更新于:2025-01-03 20:04:27
  • 在 Java 中,字符串是由 String 类表示的,它提供了许多用于操作字符串的方法。
  • 字符串在 Java 中是不可变的(immutable),这意味着一旦创建,字符串对象的内容就无法改变。
  • 当对字符串进行操作时,实际上是生成了一个新的字符串对象。

1. length()

返回字符串的长度(字符数)。这个方法是 String 类的基本方法,返回值是字符串中字符的数量。

示例:

   String str = "Hello, World!";
   int length = str.length();  // 返回 13

注意点:

  • length() 返回的是字符的数量,不等于字节数。在一些字符编码(如 UTF-8)下,一个字符可能占用多个字节。

2. charAt(int index)

返回指定索引位置的字符(索引从 0 开始)。

示例:

   String str = "Hello";
   char ch = str.charAt(1);  // 返回 'e'

注意点:

  • 如果 index 超出字符串范围(即小于 0 或大于等于字符串长度),将抛出 StringIndexOutOfBoundsException 异常。

3. substring(int start)substring(int start, int end)

  • substring(int start):返回从指定的起始索引开始到字符串末尾的子字符串。
  • substring(int start, int end):返回从 start 索引到 end 索引之间的子字符串(end 索引处的字符不包括在内)。

示例:

   String str = "Hello, World!";
   String sub1 = str.substring(7);    // 返回 "World!"
   String sub2 = str.substring(0, 5); // 返回 "Hello"

注意点:

  • start 可以为 0,也可以为大于 0 的值,但不能超过字符串长度。
  • end 必须大于 start 且不能超过字符串的长度。如果 startend 相等,返回的字符串为空。
  • substring 会创建一个新的字符串对象,原字符串不受影响。

4. contains(CharSequence sequence)

判断字符串是否包含指定的子字符串。

示例:

   String str = "Hello, World!";
   boolean contains = str.contains("World");  // 返回 true

注意点:

  • 该方法区分大小写。
  • 如果传入的是 null,则会抛出 NullPointerException

5. startsWith(String prefix)

判断字符串是否以指定的前缀开始。

示例:

   String str = "Hello, World!";
   boolean startsWith = str.startsWith("Hello");  // 返回 true

注意点:

  • 如果传入的前缀为 null,会抛出 NullPointerException
  • startsWith 要注意区分大小写。

6. endsWith(String suffix)

判断字符串是否以指定的后缀结束。

示例:

   String str = "Hello, World!";
   boolean endsWith = str.endsWith("!");  // 返回 true

注意点:

  • 如果传入的后缀为 null,会抛出 NullPointerException
  • endsWith 要注意区分大小写。

7. indexOf(int ch)indexOf(String str)

  • indexOf(int ch):返回指定字符在字符串中首次出现的位置(索引)。
  • indexOf(String str):返回指定子字符串在字符串中首次出现的位置。 示例:
   String str = "Hello, World!";
   int index1 = str.indexOf('o');      // 返回 4
   int index2 = str.indexOf("World"); // 返回 7

注意点:

  • 如果指定的字符或子字符串不存在,indexOf 会返回 -1
  • 如果参数为 null,会抛出 NullPointerException

8. lastIndexOf(int ch)lastIndexOf(String str)

  • lastIndexOf(int ch):返回指定字符在字符串中最后一次出现的位置。
  • lastIndexOf(String str):返回指定子字符串在字符串中最后一次出现的位置。

示例:

   String str = "Hello, World!";
   int lastIndex1 = str.lastIndexOf('o');      // 返回 8
   int lastIndex2 = str.lastIndexOf("World"); // 返回 7

注意点:

  • lastIndexOf 在如果指定的字符或子字符串不存在时会返回 -1

9. replace(CharSequence target, CharSequence replacement)

替换字符串中所有出现的目标子字符串为指定的替换字符串。

示例:

   String str = "Hello, World!";
   String replaced = str.replace("World", "Java");  // 返回 "Hello, Java!"

注意点:

  • replace 方法会生成一个新的字符串,原字符串不变。
  • 替换时会区分大小写。

10. toLowerCase()toUpperCase()

将字符串转换为小写或大写。

示例:

   String str = "Hello, World!";
   String lower = str.toLowerCase();  // 返回 "hello, world!"
   String upper = str.toUpperCase();  // 返回 "HELLO, WORLD!"

注意点:

  • toLowerCase()toUpperCase() 会返回一个新字符串,不会修改原字符串。

11. trim()

移除字符串前后空格。

示例:

   String str = "   Hello, World!   ";
   String trimmed = str.trim();  // 返回 "Hello, World!"

注意点:

  • 该方法只会移除字符串前后的空格,不能去除中间的空格。
  • trim() 会返回一个新的字符串。

12. split(String regex)

根据正则表达式将字符串拆分成多个部分,并返回一个字符串数组。

示例:

   String str = "apple,banana,orange";
   String[] fruits = str.split(",");  // 返回 ["apple", "banana", "orange"]

注意点:

  • 如果传入的字符串为空或正则表达式有问题,会抛出 PatternSyntaxException
  • 如果传入空字符串 "",则会把每个字符都拆分成单个元素。

13. join(CharSequence delimiter, CharSequence... elements)

使用指定的分隔符将多个字符串连接成一个字符串。

示例:

   String result = String.join(", ", "apple", "banana", "orange");
   // 返回 "apple, banana, orange"

注意点:

  • String.join() 是 Java 8 引入的静态方法,适用于拼接多个字符串。
  • 需要提供一个分隔符(如 ", "),否则会直接连接字符串。

14. valueOf()

将其他类型转换为字符串。适用于基本数据类型和对象。

示例:

   int number = 123;
   String str = String.valueOf(number);  // 返回 "123"

注意点:

  • 对象为 null 时,String.valueOf() 会返回字符串 "null",而 toString() 会抛出 NullPointerException

15. format(String format, Object... args)

使用指定的格式字符串创建一个新的字符串。

示例:

   String str = String.format("Name: %s, Age: %d", "John", 25);
   // 返回 "Name: John, Age: 25"

注意点:

  • 格式化字符串与 printf 类似,支持占位符(如 %s%d 等)。
  • 不正确的格式会抛出 java.util.FormatFlagsConversionException 异常。

16. compareTo(String anotherString)compareToIgnoreCase(String anotherString)

比较两个字符串的字典顺序。compareTo 考虑大小写,compareToIgnoreCase 忽略大小写。

示例:

   String str1 = "apple";
   String str2 = "banana";
   int result = str1.compareTo(str2);  // 返回负数,因为 "apple" < "banana"

注意点:

  • compareTo 返回值的含义:
    • 负数:表示当前字符串小于目标字符串。
    • 0:表示两个字符串相等。
    • 正数:表示当前字符串大于目标字符串。

17. matches(String regex)

判断字符串是否匹配给定的正则表达式。

示例:

   String str = "hello123";
   boolean matches = str.matches("[a-z]+\\d+");  // 返回 true

注意点:

  • 该方法用于完全匹配整个字符串与正则表达式,不能仅对部分内容匹配。

18. isEmpty()

判断字符串是否为空字符串(即长度为 0)。

示例:

   String str = "";
   boolean isEmpty = str.isEmpty();  // 返回 true

注意点:

  • isEmpty() 判断的是字符串是否长度为 0,而不是 null。如果需要判断是否为 null 或空字符串,可以使用 str == null || str.isEmpty()

19. equals(Object anObject)

比较两个字符串是否相等,比较的是内容是否相同。

示例:

   String str1 = "Hello";
   String str2 = "Hello";
   boolean equals = str1.equals(str2);  // 返回 true

注意点:

  • equals() 方法会比较两个字符串的内容是否完全一致。区分大小写。

20. equalsIgnoreCase(String anotherString)

比较两个字符串是否相等,忽略大小写。

示例:

   String str1 = "Hello";
   String str2 = "hello";
   boolean equalsIgnoreCase = str1.equalsIgnoreCase(str2);  // 返回 true

注意点:

  • equalsIgnoreCase 忽略大小写进行比较,但其他差异仍会被检测到。

评论留言

欢迎您,!您可以在这里畅言您的的观点与见解!

0 条评论