String
类有许多方法可用于检查字符串的内容,查找字符串中的字符或子字符串,更改大小写以及其余任务。html
你能够经过调用charAt()
访问器方法获取字符串中特定索引处的字符,第一个字符的索引是0
,而最后一个字符的索引是length()-1
,例如,如下代码获取字符串中索引9处的字符:java
String anotherPalindrome = "Niagara. O roar again!"; char aChar = anotherPalindrome.charAt(9);
索引从0开始,所以索引9处的字符为'O'
,以下图所示:git
若是要从字符串中获取多个连续字符,可使用substring
方法,substring
方法有两个版本,以下表所示:github
方法 | 描述 |
---|---|
String substring(int beginIndex, int endIndex) |
返回一个新字符串,该字符串是此字符串的子字符串; 子字符串从指定的 beginIndex 开始,并扩展到索引endIndex - 1 处的字符。 |
String substring(int beginIndex) |
返回一个新字符串,该字符串是此字符串的子字符串;integer 参数指定第一个字符的索引;这里,返回的子字符串延伸到原始字符串的末尾。 |
如下代码从Niagara palindrome获取从索引11延伸到但不包括索引15的子字符串,这是“roar”一词:正则表达式
String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15);
如下是其余几种用于操做字符串的String
方法:segmentfault
方法 | 描述 |
---|---|
String[] split(String regex) String[] split(String regex, int limit) |
搜索字符串参数(包含正则表达式)指定的匹配项,并相应地将此字符串拆分为字符串数组; 可选的整数参数指定返回数组的最大大小,正则表达式在标题为“正则表达式”的课程中介绍。 |
CharSequence subSequence(int beginIndex, int endIndex) |
返回一个索引从beginIndex 到endIndex - 1 构造的新字符序列。 |
String trim() |
返回删除了前面和后面的空格的此字符串的副本。 |
String toLowerCase() String toUpperCase() |
返回转换为小写或大写的此字符串的副本,若是不须要转换,则这些方法返回原始字符串。 |
如下是一些用于在字符串中查找字符或子字符串的其余String
方法,String
类提供访问器方法,返回特定字符或子字符串在字符串中的位置:indexOf()
和lastIndexOf()
,indexOf()
方法从字符串的开头向后搜索,而lastIndexOf()
方法从字符串的末尾向前搜索,若是未找到字符或子字符串,indexOf()
和lastIndexOf()
将返回-1
。数组
String
类还提供了一个搜索方法contains
,若是字符串包含特定的字符序列,则返回true
,当你只需知道字符串包含字符序列但使用精确位置并不重要时,请使用此方法。spa
下表描述了各类字符串搜索方法。code
方法 | 描述 |
---|---|
int indexOf(int ch) int lastIndexOf(int ch) |
返回指定字符的第一次(最后一次)出现的索引。 |
int indexOf(int ch, int fromIndex) int lastIndexOf(int ch, int fromIndex) |
返回指定字符的第一次(最后一次)出现的索引,从指定的索引向前(向后)搜索。 |
int indexOf(String str) int lastIndexOf(String str) |
返回指定子字符串的第一次(最后一次)出现的索引。 |
int indexOf(String str, int fromIndex) int lastIndexOf(String str, int fromIndex) |
返回指定子字符串的第一次(最后一次)出现的索引,从指定的索引向前(向后)搜索。 |
boolean contains(CharSequence s) |
若是字符串包含指定的字符序列,则返回true 。 |
CharSequence
是一个由String
类实现的接口,所以,你可使用字符串做为contains()
方法的参数。
String
类只有不多的方法能够将字符或子字符串插入到字符串中,一般,不须要它们:你能够经过链接从字符串中删除的子字符串以及要插入的子字符串来建立新字符串。htm
可是,String
类确实有四种方法能够替换找到的字符或子字符串,它们是:
方法 | 描述 |
---|---|
String replace(char oldChar, char newChar) |
返回一个新字符串,该字符串是使用newChar 替换此字符串中出现的全部oldChar 。 |
String replace(CharSequence target, CharSequence replacement) |
将此字符串中与文字target 序列匹配的每一个子字符串替换为指定的文字replacement 序列。 |
String replaceAll(String regex, String replacement) |
将与给定正则表达式匹配的字符串的每一个子字符串替换为给定的replacement 。 |
String replaceFirst(String regex, String replacement) |
将匹配给定正则表达式的字符串的第一个子字符串替换为给定的replacement 。 |
下面的类Filename演示了如何使用lastIndexOf()
和substring()
来隔离文件名的不一样部分。
如下
Filename
类中的方法不执行任何错误检查,并假设其参数包含完整的目录路径和带扩展名的文件名,若是这些方法是生产代码,他们将验证他们的参数是否正确构造。
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); } // gets filename without extension 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程序,它构造一个Filename
对象并调用它的全部方法:
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()); } }
如下是该程序的输出:
Extension = html Filename = index Path = /home/user
以下图所示,咱们的extension
方法使用lastIndexOf
来定位文件名中最后一次出现的点(.
),而后substring
使用lastIndexOf
的返回值来提取文件扩展名 — 也就是说,从字符串的点到结尾的子字符串。此代码假定文件名中包含点,若是文件名没有点,则lastIndexOf
返回-1
,而且substring
方法抛出StringIndexOutOfBoundsException
。
另请注意,扩展方法使用dot + 1
做为substring
的参数,若是点字符(.
)是字符串的最后一个字符,则dot + 1
等于字符串的长度,则大于字符串中的最大索引(由于索引从0开始),这是substring
的合法参数,由于该方法接受的索引等于但不大于字符串的长度,并将其解释为“字符串的结尾”。