95. Java 数字和字符串 - 操作字符串的其他方法
Java
的 String
类提供了大量方法来操作和处理字符串,除了基本的创建、拼接、获取字符和子字符串之外,还包括以下常用功能:
一、分割字符串
split(String regex)
和 **split(String regex, int limit)
**这两个方法使用正则表达式对字符串进行分割,返回一个字符串数组。regex
参数为用于匹配的正则表达式。limit
参数指定返回数组的最大长度。
示例:
java
String fruits = "apple,banana,orange,grape";
String[] fruitArray = fruits.split(",");
for (String fruit : fruitArray) {
System.out.println(fruit);
}
运行结果:
java
apple
banana
orange
grape
如果指定 limit 参数,例如:
java
String[] limitedArray = fruits.split(",", 3);
for (String s : limitedArray) {
System.out.println(s);
}
则输出:
java
apple
banana
orange,grape
二、子序列与修剪
-
**
subSequence(int beginIndex, int endIndex)
**返回一个新的字符序列,与substring()
方法类似。注意返回值类型为CharSequence
。示例:
javaString str = "Hello, world!"; CharSequence subSeq = str.subSequence(7, 12); System.out.println(subSeq); // 输出 "world"
-
**
trim()
**返回一个新的字符串,该字符串移除了前导和尾随的空格字符。示例:
javaString raw = " Hello, Java! "; String trimmed = raw.trim(); System.out.println("[" + trimmed + "]"); // 输出 "[Hello, Java!]"
-
toLowerCase()
和 **toUpperCase()
**分别返回字符串转换为小写和大写的副本。若无需转换,则返回原始字符串。示例:
javaString mixedCase = "Java Programming"; System.out.println(mixedCase.toLowerCase()); // java programming System.out.println(mixedCase.toUpperCase()); // JAVA PROGRAMMING
三、在字符串中搜索字符和子字符串
Java 的 String 类提供了多种方法来查找字符或子字符串的位置,常用方法包括:
-
**
indexOf(
) 与lastIndexOf()
**这些方法用于查找指定字符或字符串首次或最后一次出现的位置:int indexOf(int ch)
:返回字符 ch 第一次出现的位置;如果不存在则返回-1
。int indexOf(int ch, int fromIndex)
:从指定位置开始搜索。int indexOf(String str)
:返回子字符串第一次出现的位置。int indexOf(String str, int fromIndex)
:从指定位置开始查找子字符串。- 对应的
lastIndexOf()
方法则从字符串末尾开始向前搜索。
示例:
javaString text = "Java is fun, and Java is powerful!"; int firstJava = text.indexOf("Java"); int lastJava = text.lastIndexOf("Java"); System.out.println("第一次出现 Java 的位置: " + firstJava); System.out.println("最后一次出现 Java 的位置: " + lastJava);
-
**
contains(CharSequence s)
**判断字符串是否包含指定的字符序列,返回 true 或 false。示例:
javaboolean hasFun = text.contains("fun"); System.out.println("字符串中是否包含 'fun'? " + hasFun);
四、将字符和子字符串替换为字符串
虽然 String
类没有直接提供插入子字符串的方法,但可以使用替换方法来生成新的字符串。常用替换方法包括:
-
**
replace(char oldChar, char newChar)
**替换所有出现的旧字符为新字符。示例:
javaString s = "banana"; String replaced = s.replace('a', 'o'); System.out.println(replaced); // 输出 "bonono"
-
**
replace(CharSequence target, CharSequence replacement)
**替换所有匹配目标序列的子字符串为指定的新文本。示例:
javaString s = "I like Java. Java is fun."; String replaced = s.replace("Java", "Python"); System.out.println(replaced); // 输出 "I like Python. Python is fun."
-
**
replaceAll(String regex, String replacement)
**使用正则表达式替换所有匹配的子字符串。示例:
javaString s = "one1two2three3"; String replaced = s.replaceAll("[0-9]", "#"); System.out.println(replaced); // 输出 "one#two#three#"
-
**
replaceFirst(String regex, String replacement)
**替换第一个匹配正则表达式的子字符串。示例:
javaString s = "one1two2three3"; String replaced = s.replaceFirst("[0-9]", "#"); System.out.println(replaced); // 输出 "one#two2three3"
五、String
类的实际应用 ------ 文件名处理示例
下面的示例展示了如何利用 lastIndexOf()
和 substring()
方法来解析文件路径,分离出路径、文件名和扩展名。
示例:Filename
类
java
public class Filename {
private String fullPath;
private char pathSeparator, extensionSeparator;
public Filename(String str, char sep, char ext) {
fullPath = str;
pathSeparator = sep;
extensionSeparator = ext;
}
// 获取文件扩展名
public String extension() {
int dot = fullPath.lastIndexOf(extensionSeparator);
return fullPath.substring(dot + 1);
}
// 获取不带扩展名的文件名
public String filename() {
int dot = fullPath.lastIndexOf(extensionSeparator);
int sep = fullPath.lastIndexOf(pathSeparator);
return fullPath.substring(sep + 1, dot);
}
// 获取文件路径
public String path() {
int sep = fullPath.lastIndexOf(pathSeparator);
return fullPath.substring(0, sep);
}
}
示例:FilenameDemo
类
java
public class FilenameDemo {
public static void main(String[] args) {
final String FPATH = "/home/user/index.html";
Filename myHomePage = new Filename(FPATH, '/', '.');
System.out.println("Extension = " + myHomePage.extension());
System.out.println("Filename = " + myHomePage.filename());
System.out.println("Path = " + myHomePage.path());
}
}
运行结果为:
java
Extension = html
Filename = index
Path = /home/user
说明:
- 通过
lastIndexOf()
方法定位路径分隔符和扩展名分隔符的位置,使用substring()
提取出相应部分。 - 注意,此代码假定传入的路径字符串中确实包含分隔符,否则会抛出异常。在生产代码中应进行参数验证。
总结
- 操作字符串的其他方法 :包括分割(
split
)、子序列(subSequence
)、修剪(trim
)、大小写转换(toLowerCase/toUpperCase
)。 - 搜索方法 :利用
indexOf
、lastIndexOf
和contains
方法查找字符或子字符串的位置。 - 替换方法 :通过
replace
、replaceAll
和replaceFirst
方法替换字符串中的部分内容,生成新字符串。 - 实际应用 :结合
lastIndexOf
和substring
方法可以实现如文件名解析等实际需求。
通过这些方法,我们可以灵活地操作字符串,为后续的数据处理、文本解析、用户输入校验等任务提供强有力的支持。