Java中使用substring()函数截取字符串的示例
Java中有很多对字符串处理的函数,其中之一就是substring()函数。substring()函数可以用来截取字符串的一部分,其语法如下:
public String substring(int beginIndex) public String substring(int beginIndex, int endIndex)
其中, 个参数指定了截取的起始位置(包括该位置),第二个参数指定了截取的结束位置(不包括该位置)。如果只传入一个参数,则从该位置截取到字符串末尾。
下面给出一些使用substring()函数截取字符串的示例:
#### 截取固定范围的字符串
假设我们有一个字符串,叫做"Hello World",我们想要截取其中的"World"这个子串,可以使用如下代码:
String str = "Hello World"; String substr = str.substring(6, 11); // 从第6个字符开始,截取到第11个字符(不包括第11个字符) System.out.println(substr); // 输出"World"
#### 截取字符串的一部分
比如我们想要获取字符串的前缀或后缀,就可以使用substring()函数。例如,我们有一个字符串"Hello World",我们想要截取其中的前5个字符,可以使用如下代码:
String str = "Hello World"; String substr = str.substring(0, 5); // 从第0个字符开始,截取到第5个字符(不包括第5个字符) System.out.println(substr); // 输出"Hello"
类似地,如果我们想要截取字符串的后5个字符,可以使用如下代码:
String str = "Hello World"; String substr = str.substring(str.length() - 5); // 从倒数第5个字符开始截取到字符串末尾 System.out.println(substr); // 输出"World"
#### 按照分隔符截取字符串
在一些场景中,需要按照分隔符来截取字符串。例如,我们有一个邮箱地址,希望分别获取用户名和域名部分:
String email = "john@example.com";
int atIndex = email.indexOf('@'); // 获取@符号的位置
String username = email.substring(0, atIndex);
String domain = email.substring(atIndex + 1);
System.out.println("Username: " + username);
System.out.println("Domain: " + domain);
其中,indexOf()函数用来查找@符号的位置,substring()函数则用来按照该位置来截取字符串。运行上述代码,输出结果为:
Username: john Domain: example.com
#### 关于字符串的不可变性
需要注意的是,虽然substring()函数返回的是一个新的字符串,但它并没有改变原来的字符串。这是因为在Java中,字符串是不可变的,也就是说,一旦创建了一个字符串对象,其内容就无法修改。
因此,对原有字符串进行操作时,必须使用新的字符串来保存操作后的结果。例如,在 个示例中,我们可以用下面的代码来替换原有字符串中的"Hello":
String str = "Hello World"; String newStr = "Hi" + str.substring(5); System.out.println(newStr); // 输出"Hi World"
如果我们写成如下代码,不使用新的字符串来保存结果,会发现原有字符串并没有发生变化:
String str = "Hello World"; str = "Hi" + str.substring(5); System.out.println(str); // 输出"Hi World"
但是,这并不是因为我们修改了原有字符串,而是新创建了一个字符串对象来保存修改后的结果。
