全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-09 8 分钟 ✍️ juanwangdev

字符串常用方法

String类提供大量字符串操作方法。

获取信息

length获取长度

Java
String str = "Hello World";
int len = str.length();  // 11

String chinese = "你好";
int len = chinese.length();  // 2

charAt获取字符

Java
String str = "Hello";

char c1 = str.charAt(0);  // 'H'(第一个字符)
char c2 = str.charAt(4);  // 'o'(最后一个)

// 索引从0开始,越界抛异常
// str.charAt(10);  // StringIndexOutOfBoundsException

indexOf查找位置

Java
String str = "Hello World";

// 查找字符首次出现位置
int pos1 = str.indexOf('o');      // 4
int pos2 = str.indexOf('W');      // 6

// 查找子字符串位置
int pos3 = str.indexOf("World");  // 6
int pos4 = str.indexOf("lo");     // 3

// 未找到返回-1
int pos5 = str.indexOf('z');      // -1
int pos6 = str.indexOf("abc");    // -1

// 从指定位置开始查找
int pos7 = str.indexOf('o', 5);   // 7(从索引5开始)

lastIndexOf反向查找

Java
String str = "Hello World";

// 查找字符最后出现位置
int pos = str.lastIndexOf('o');  // 7

// 查找子字符串最后位置
int pos2 = str.lastIndexOf("o"); // 7

contains判断包含

Java
String str = "Hello World";

boolean has = str.contains("World");  // true
boolean has2 = str.contains("Java");   // false

字符串截取

substring截取子串

Java
String str = "Hello World";

// 从指定位置截取到最后
String sub1 = str.substring(6);     // "World"

// 截取指定范围(开始索引,结束索引)
String sub2 = str.substring(0, 5);  // "Hello"(不含索引5)

// 注意:substring(beginIndex, endIndex)
// 包含beginIndex,不包含endIndex

截取示例

Java
String phone = "13812345678";
String prefix = phone.substring(0, 3);   // "138"
String middle = phone.substring(3, 7);   // "1234"
String suffix = phone.substring(7);      // "5678"

字符串替换

replace替换字符/字符串

Java
String str = "Hello World";

// 替换字符
String r1 = str.replace('o', 'a');  // "Hella Warld"

// 替换字符串
String r2 = str.replace("World", "Java");  // "Hello Java"

// 替换所有匹配(replace也是全部替换)
String r3 = "aaa".replace('a', 'b');  // "bbb"

replaceAll正则替换

Java
String str = "Hello123World456";

// 正则替换:替换所有数字
String r1 = str.replaceAll("\\d", "");  // "HelloWorld"

// 替换所有非字母
String r2 = str.replaceAll("[^a-zA-Z]", "");  // "HelloWorld"

// 替换所有空白
String r3 = "a b c".replaceAll("\\s", "");  // "abc"

replaceFirst首次替换

Java
String str = "aaa";

// 只替换第一个匹配
String r = str.replaceFirst("a", "b");  // "baa"

字符串分割

split分割为数组

Java
String str = "a,b,c,d";

// 按逗号分割
String[] arr = str.split(",");  // ["a", "b", "c", "d"]

// 限制分割数量
String[] arr2 = str.split(",", 2);  // ["a", "b,c,d"]

split正则分割

Java
String str = "a1b2c3d";

// 按数字分割
String[] arr = str.split("\\d");  // ["a", "b", "c", "d"]

// 按多个字符分割
String str2 = "a,b;c|d";
String[] arr2 = str2.split("[,;|]");  // ["a", "b", "c", "d"]

分割注意事项

Java
// 末尾空字符串可能被忽略
String str = "a,b,c,";
String[] arr = str.split(",");  // ["a", "b", "c"]

// 使用limit保留末尾空串
String[] arr2 = str.split(",", -1);  // ["a", "b", "c", ""]

字符串修剪

trim去除两端空格

Java
String str = "  Hello World  ";

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

// 只去除两端,不去中间
String str2 = "  Hello  World  ";
String trimmed2 = str2.trim();  // "Hello  World"

strip去除空白(Java 11+)

Java
String str = "  Hello  ";

String stripped = str.strip();  // "Hello"

// strip支持更多空白字符(包括Unicode空白)
String str2 = " Hello ";  // 全角空格
String stripped2 = str2.strip();   // "Hello"(全角空格也去除)

stripLeading/stripTrailing

Java
String str = "  Hello  ";

// 只去除前导空白
String leading = str.stripLeading();  // "Hello  "

// 只去除尾部空白
String trailing = str.stripTrailing();  // "  Hello"

大小写转换

toUpperCase转大写

Java
String str = "Hello";

String upper = str.toUpperCase();  // "HELLO"

// 指定Locale处理特殊语言
String turkish = "i".toUpperCase(Locale.forLanguageTag("tr"));  // "İ"

toLowerCase转小写

Java
String str = "HELLO";

String lower = str.toLowerCase();  // "hello"

字符串判断

startsWith判断开头

Java
String str = "Hello World";

boolean start1 = str.startsWith("Hello");  // true
boolean start2 = str.startsWith("World");  // false

// 从指定位置判断
boolean start3 = str.startsWith("World", 6);  // true

endsWith判断结尾

Java
String str = "Hello World";

boolean end1 = str.endsWith("World");  // true
boolean end2 = str.endsWith("Hello");  // false

// 文件名判断
String filename = "test.txt";
boolean isTxt = filename.endsWith(".txt");  // true

isEmpty判断空串

Java
String str = "";

boolean empty = str.isEmpty();  // true

String str2 = "Hello";
boolean empty2 = str2.isEmpty();  // false

isBlank判断空白(Java 11+)

Java
String str = "   ";

boolean blank = str.isBlank();  // true

String str2 = "";
boolean blank2 = str2.isBlank();  // true

String str3 = "Hello";
boolean blank3 = str3.isBlank();  // false

字符串连接

concat连接字符串

Java
String str1 = "Hello";
String str2 = " World";

String result = str1.concat(str2);  // "Hello World"

// 等价于 str1 + str2

join连接数组(Java 8+)

Java
// 用指定分隔符连接
String result = String.join("-", "a", "b", "c");  // "a-b-c"

// 连接数组
String[] arr = {"a", "b", "c"};
String result2 = String.join(",", arr);  // "a,b,c"

字符串重复与空白

repeat重复(Java 11+)

Java
String str = "abc";

String repeated = str.repeat(3);  // "abcabcabc"

String str2 = "x";
String repeated2 = str2.repeat(5);  // "xxxxx"

其他方法

toCharArray转为字符数组

Java
String str = "Hello";

char[] chars = str.toCharArray();  // ['H', 'e', 'l', 'l', 'o']

getBytes转为字节数组

Java
String str = "Hello";

byte[] bytes = str.getBytes();  // ASCII编码

// 指定编码
byte[] bytes2 = str.getBytes("UTF-8");
byte[] bytes3 = str.getBytes(StandardCharsets.UTF_8);

format格式化字符串

Java
String name = "张三";
int age = 25;

String result = String.format("姓名:%s, 年龄:%d", name, age);
// "姓名:张三, 年龄:25"

// 格式化数字
String num = String.format("%.2f", 3.14159);  // "3.14"

要点总结

  • length()获取字符串长度
  • charAt()获取指定位置字符
  • indexOf()/lastIndexOf()查找位置
  • contains()判断是否包含
  • substring()截取子字符串
  • replace()/replaceAll()替换
  • split()分割字符串为数组
  • trim()/strip()去除空白
  • toUpperCase()/toLowerCase()转换大小写
  • startsWith()/endsWith()判断开头结尾
  • isEmpty()/isBlank()判断空/空白
  • concat()/join()连接字符串
  • repeat()重复字符串(Java 11+)
  • format()格式化字符串

📝 发现内容有误?点击此处直接编辑

← 上一篇 字符串与字符数组转换
下一篇 → 字符串拼接与性能
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库