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
的合法參數,由於該方法接受的索引等於但不大於字符串的長度,並將其解釋爲「字符串的結尾」。