java如何截取字符串
截取字符串的常用方法
在Java中,截取字符串可以通过多种方式实现,主要依赖于String类提供的方法。以下是几种常见的方法:
使用substring方法
substring方法是String类中最常用的截取字符串方法,有两种重载形式:
substring(int beginIndex):从指定索引开始截取到字符串末尾。substring(int beginIndex, int endIndex):从指定开始索引截取到结束索引(不包括结束索引本身)。
示例代码:
String str = "Hello, World!";
String sub1 = str.substring(7); // 结果为 "World!"
String sub2 = str.substring(0, 5); // 结果为 "Hello"
使用split方法
split方法通过正则表达式将字符串分割为数组,可以间接实现截取效果。适用于按特定分隔符截取字符串的场景。

示例代码:
String str = "apple,banana,orange";
String[] parts = str.split(",");
String firstPart = parts[0]; // 结果为 "apple"
使用StringTokenizer类
StringTokenizer是旧版Java中用于分割字符串的类,适用于简单分隔符场景,但现代开发中更推荐使用split方法。

示例代码:
String str = "one two three";
StringTokenizer tokenizer = new StringTokenizer(str);
String firstToken = tokenizer.nextToken(); // 结果为 "one"
使用正则表达式(Pattern和Matcher)
对于复杂的截取需求,可以使用Pattern和Matcher类通过正则表达式匹配并提取子字符串。
示例代码:
String str = "Price: $19.99";
Pattern pattern = Pattern.compile("\\$(\\d+\\.\\d{2})");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String price = matcher.group(1); // 结果为 "19.99"
}
注意事项
- 使用
substring方法时需注意索引越界问题,beginIndex必须小于字符串长度,endIndex不能大于字符串长度。 - 字符串索引从0开始计数。
- 对于包含Unicode补充字符的字符串,使用
codePoint相关方法更安全。 substring在Java 7及以后版本中会创建新的字符数组,可能导致内存问题,对于大字符串可考虑其他方式。






