操縱字符串中的字符
String類有許多方法可用于檢查字符串的內(nèi)容,查找字符串中的字符或子字符串,更改大小寫以及其他任務。
按索引獲取字符和子字符串你可以通過調(diào)用charAt()訪問器方法獲取字符串中特定索引處的字符,第一個字符的索引是0,而最后一個字符的索引是length()-1,例如,以下代碼獲取字符串中索引9處的字符:
String anotherPalindrome = "Niagara. O roar again!"; char aChar = anotherPalindrome.charAt(9);
索引從0開始,因此索引9處的字符為"O",如下圖所示:
如果要從字符串中獲取多個連續(xù)字符,可以使用substring方法,substring方法有兩個版本,如下表所示:
方法 | 描述 |
---|---|
String substring(int beginIndex, int endIndex) | 返回一個新字符串,該字符串是此字符串的子字符串; 子字符串從指定的beginIndex開始,并擴展到索引endIndex - 1處的字符。 |
String substring(int beginIndex) | 返回一個新字符串,該字符串是此字符串的子字符串; integer參數(shù)指定第一個字符的索引; 這里,返回的子字符串延伸到原始字符串的末尾。 |
以下代碼從Niagara palindrome獲取從索引11延伸到但不包括索引15的子字符串,這是“roar”一詞:
String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15);操縱字符串的其他方法
以下是其他幾種用于操作字符串的String方法:
方法 | 描述 |
---|---|
String[] split(String regex) String[] split(String regex, int limit) |
搜索字符串參數(shù)(包含正則表達式)指定的匹配項,并相應地將此字符串拆分為字符串數(shù)組; 可選的整數(shù)參數(shù)指定返回數(shù)組的最大大小,正則表達式在標題為“正則表達式”的課程中介紹。 |
CharSequence subSequence(int beginIndex, int endIndex) | 返回一個索引從beginIndex到endIndex - 1構造的新字符序列。 |
String trim() | 返回刪除了前面和后面的空格的此字符串的副本。 |
String toLowerCase() String toUpperCase() |
返回轉(zhuǎn)換為小寫或大寫的此字符串的副本,如果不需要轉(zhuǎn)換,則這些方法返回原始字符串。 |
以下是一些用于在字符串中查找字符或子字符串的其他String方法,String類提供訪問器方法,返回特定字符或子字符串在字符串中的位置:indexOf()和lastIndexOf(),indexOf()方法從字符串的開頭向后搜索,而lastIndexOf()方法從字符串的末尾向前搜索,如果未找到字符或子字符串,indexOf()和lastIndexOf()將返回-1。
String類還提供了一個搜索方法contains,如果字符串包含特定的字符序列,則返回true,當你只需知道字符串包含字符序列但使用精確位置并不重要時,請使用此方法。
下表描述了各種字符串搜索方法。
方法 | 描述 |
---|---|
int indexOf(int ch) int lastIndexOf(int ch) |
返回指定字符的第一次(最后一次)出現(xiàn)的索引。 |
int indexOf(int ch, int fromIndex) int lastIndexOf(int ch, int fromIndex) |
返回指定字符的第一次(最后一次)出現(xiàn)的索引,從指定的索引向前(向后)搜索。 |
int indexOf(String str) int lastIndexOf(String str) |
返回指定子字符串的第一次(最后一次)出現(xiàn)的索引。 |
int indexOf(String str, int fromIndex) int lastIndexOf(String str, int fromIndex) |
返回指定子字符串的第一次(最后一次)出現(xiàn)的索引,從指定的索引向前(向后)搜索。 |
boolean contains(CharSequence s) | 如果字符串包含指定的字符序列,則返回true。 |
CharSequence是一個由String類實現(xiàn)的接口,因此,你可以使用字符串作為contains()方法的參數(shù)。將字符和子字符串替換到字符串中
String類只有很少的方法可以將字符或子字符串插入到字符串中,通常,不需要它們:你可以通過連接從字符串中刪除的子字符串以及要插入的子字符串來創(chuàng)建新字符串。
但是,String類確實有四種方法可以替換找到的字符或子字符串,它們是:
方法 | 描述 |
---|---|
String replace(char oldChar, char newChar) | 返回一個新字符串,該字符串是使用newChar替換此字符串中出現(xiàn)的所有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類中的方法不執(zhí)行任何錯誤檢查,并假設其參數(shù)包含完整的目錄路徑和帶擴展名的文件名,如果這些方法是生產(chǎn)代碼,他們將驗證他們的參數(shù)是否正確構造。
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對象并調(diào)用它的所有方法:
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來定位文件名中最后一次出現(xiàn)的點(.),然后substring使用lastIndexOf的返回值來提取文件擴展名 — 也就是說,從字符串的點到結尾的子字符串。此代碼假定文件名中包含點,如果文件名沒有點,則lastIndexOf返回-1,并且substring方法拋出StringIndexOutOfBoundsException。
另請注意,擴展方法使用dot + 1作為substring的參數(shù),如果點字符(.)是字符串的最后一個字符,則dot + 1等于字符串的長度,則大于字符串中的最大索引(因為索引從0開始),這是substring的合法參數(shù),因為該方法接受的索引等于但不大于字符串的長度,并將其解釋為“字符串的結尾”。
上一篇:在數(shù)字和字符串之間轉(zhuǎn)換 下一篇:比較字符串和字符串的部分文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72911.html
在數(shù)字和字符串之間轉(zhuǎn)換 將字符串轉(zhuǎn)換為數(shù)字 通常,程序以字符串對象中的數(shù)字數(shù)據(jù)結束 — 例如,用戶輸入的值。 包裝原始數(shù)字類型(Byte、Integer、Double、Float、Long和Short)的Number子類每個都提供一個名為valueOf的類方法,該方法將字符串轉(zhuǎn)換為該類型的對象。下面是一個示例ValueOfDemo,它從命令行獲取兩個字符串,將它們轉(zhuǎn)換為數(shù)字,并對值執(zhí)行算術運算: ...
Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續(xù)版本中引入的改進。 Java教程是希望使用Java編程語言創(chuàng)建應用程序的程序員的實用指南,其中包括數(shù)百個完整的工作示例和數(shù)十個課程,相關課程組被組織成教程。 覆蓋基礎知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術和安裝Java開發(fā)軟件并使用...
摘要:創(chuàng)建字符串教程字符串長度用于獲取有關對象的信息的方法稱為訪問器方法。類在中被提出,它和之間的最大不同在于的方法不是線程安全的不能同步訪問。然而在應用程序要求線程安全的情況下,則必須使用類。 一般地,當需要使用數(shù)字的時候,我們通常使用內(nèi)置數(shù)據(jù)類型,如:byte、int、long、double 等。 在實際開發(fā)過程中,我們經(jīng)常會遇到需要使用對象,而不是內(nèi)置數(shù)據(jù)類型的情形。為了解決這個問題,...
I/O流 I/O流表示輸入源或輸出目標,流可以表示許多不同類型的源和目標,包括磁盤文件、設備、其他程序和內(nèi)存數(shù)組。 流支持許多不同類型的數(shù)據(jù),包括簡單字節(jié)、原始數(shù)據(jù)類型、本地化字符和對象,有些流只是傳遞數(shù)據(jù),其他人以有用的方式操縱和轉(zhuǎn)換數(shù)據(jù)。 無論它們?nèi)绾卧趦?nèi)部工作,所有流都為使用它們的程序提供相同的簡單模型:流是一系列數(shù)據(jù),程序使用輸入流從源讀取數(shù)據(jù),一次一個條目: showImg(https:...
摘要:表名列名列名列名值值值刪楷體刪除數(shù)據(jù)是最簡單的語句了,只需要指定表名和查詢條件就行。列名統(tǒng)計當前條件下查詢出的數(shù)據(jù)的數(shù)量。 一文解析SQLServer數(shù)據(jù)庫 目錄...
閱讀 2562·2023-04-25 18:13
閱讀 770·2021-11-22 12:10
閱讀 2970·2021-11-22 11:57
閱讀 2138·2021-11-19 11:26
閱讀 2164·2021-09-22 15:40
閱讀 1460·2021-09-03 10:28
閱讀 2704·2019-08-30 15:53
閱讀 1950·2019-08-30 15:44