Substring函数的妙用:从字符串中提取子串的实用技巧
在我们日常的程序开发中,字符串的处理是一个极其重要的部分。而在字符串的处理中,很多时候需要提取字符串的一部分,也就是我们常说的子串。针对这种情况,Java中提供了一个非常方便的函数——substring函数。这个函数可以让我们轻松地从原始字符串中提取出我们需要的子串,非常实用。本文将针对substring函数的用法和实用技巧进行详细的介绍和总结,希望能方便大家更好地使用这个函数。
1、substring函数的基本用法
在Java中,substring函数被定义在String类中,用于提取原始字符串的一部分作为新字符串。具体的函数用法如下:
public String substring(int beginIndex)
public String substring(int beginIndex, int endIndex)
其中,第一个函数根据指定的beginIndex值提取一个子串,beginIndex表示子串的起始位置。第二个函数则会在指定的beginIndex和endIndex之间提取子串,其中beginIndex包含,endIndex不包含。可以看到,substring函数是非常方便和实用的。
例如,有一个字符串str="Java Programming",我们希望提取其中的“Programming”一词作为新字符串。那么可以这样调用substring函数:
String newStr = str.substring(5);
这样,我们就能得到一个名为newStr的新字符串,其值为“Programming”。为什么是5呢?因为“Programming”一词在原字符串中的起始位置是5,我们只需要从这个位置开始提取即可。
如果我们想要提取“Java Program”这一段字符串呢?那么可以使用第二个函数进行提取:
String newStr = str.substring(0,11);
这个函数的参数已经说明得很清楚了,我们需要从原字符串的0位置开始提取,一直到第11个位置。一定要注意,endIndex不包含在子串中。这里的结果会是“Java Program”。
2、substring函数的应用实例
上面提到的两种基本用法只是substring函数的冰山一角。下面,我们将结合实际需求,展示substring函数的更多用法。
2.1、提取URL中的域名
在常规的Web开发中,经常需要从URL地址中提取域名。例如,将“http://www.baidu.com”中的“://”和“/”之间的部分提取出来,我们可以这样使用substring函数:
String url = "http://www.baidu.com";
int idx1 = url.indexOf("//");
int idx2 = url.indexOf("/", idx1+2);
String domain = url.substring(idx1+2, idx2);
这里的indexOf函数就是查找某个子串在另一个字符串中的位置,这个函数的返回值即是要提取的位置值。注意,我们在查找第二个“/”时从idx1+2开始查找,是为了跳过“://”这个部分。这样得到的domain即是“www.baidu.com”。
2.2、提取文件路径中的文件名
很多时候,我们需要从文件路径中提取出文件名,以进行一些操作。例如,我们需要从“C:\Test\example.txt”中提取出例子文件名example.txt,可以这样使用substring函数:
String filePath = "C:\Test\example.txt";
int idx = filePath.lastIndexOf("\\");
String fileName = filePath.substring(idx+1);
这里的lastIndexOf函数是查找一个字符在字符串中的最后一个位置,即可以得到所查找字符的末尾位置。因此,我们可以根据最后一个“\”的位置,提取文件名所在的部分。最后得到的fileName即是“example.txt”。
2.3、分割字符串
有一些需要将原字符串分割成多个子串的情况,substring函数也能够胜任。例如,我们需要将一个字符串“apple,orange,banana”中的三个水果名分割出来,可以这样使用substring函数:
String str = "apple,orange,banana";
int idx1 = 0;
int idx2 = str.indexOf(",");
while(idx2!=-1){
String fruit = str.substring(idx1,idx2);
System.out.println(fruit);
idx1 = idx2+1;
idx2 = str.indexOf(",",idx1);
}
String fruit = str.substring(idx1); //最后一个逗号后面的部分
System.out.println(fruit);
这里的算法其实很简单——我们不断地从头开始查找逗号的位置,然后将逗号前的子串提取出来进行操作。而最后一个逗号后面的部分是剩下的不被逗号包含的部分,所以单独处理。得到的输出结果将会是这样的:
apple
orange
banana
2.4、去掉字符串中的空格
对于一个字符串,我们想去掉其中的空格,可以使用substring函数和trim函数的组合,例如:
String str = " Hello World! ";
String newStr = str.trim().substring(6);
这里的trim函数用于去掉字符串两端的空格,然后使用substring提取想要的子串。最后得到的newStr将会是“World!”。
2.5、将大写字母转换为小写字母
在密码验证等情况下,我们需要将用户输入的大写字母全部转换为小写字母。那么可以使用substring函数和toLowerCase函数的结合:
String str = "ABCDEFG";
char first = str.charAt(0);
first = str.substring(0,1).toLowerCase().charAt(0);
这里的charAt函数用于获取字符串中指定位置的字符,toLowerCase函数用于将首字母转化为小写字母。注意,toLowerCase函数和substring函数都会返回新字符串,因此需要用charAt函数获取其中的单个字符。
3、结语
对于substring函数的讲解,本文仅仅是给出了一些例子和应用场景。实际上,substring函数还有非常多的使用方法,具体可参照Java官方文档。但总体而言,substring函数是非常实用的字符串处理函数,能够有效地解决我们在程序开发中遇到的各种字符串处理问题。希望本文能够对初学Java的读者有所帮助。