整理Java編程中字符串的常用操作方法
字符
一般情況下,當(dāng)我們處理字符時(shí),我們用原始數(shù)據(jù)類(lèi)型 char。
示例
char ch = 'a'; // Unicode for uppercase Greek omega character char uniChar = '\u039A'; // an array of chars char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };
然而在開(kāi)發(fā)中,我們會(huì)遇到需要使用對(duì)象而不是原始數(shù)據(jù)類(lèi)型的情況。為了達(dá)到這個(gè)需求。Java 為原始數(shù)據(jù)類(lèi)型 char 提供了包裝類(lèi) Character。
Character 類(lèi)為操控字符提供了一系列有用處的類(lèi)(例如:靜態(tài)類(lèi))。你可以借助 Character 構(gòu)造函數(shù)創(chuàng)造一個(gè) Character 對(duì)象。
Character ch = new Character('a');
Java 編譯器也將能在某些情況下為你創(chuàng)造一個(gè) Character 對(duì)象。例如:如果你將一個(gè)原始 char 傳輸?shù)揭粋€(gè)可預(yù)期對(duì)象的方法,編譯器就會(huì)為你自動(dòng)將 char 轉(zhuǎn)化成 Character。 如果轉(zhuǎn)換從反方向進(jìn)行,這個(gè)特點(diǎn)被稱(chēng)之為自動(dòng)裝箱或拆箱。
示例
// Here following primitive char 'a' // is boxed into the Character object ch Character ch = 'a'; // Here primitive 'x' is boxed for method test, // return is unboxed to char 'c' char c = test('x');
轉(zhuǎn)義序列
有反斜杠(\)在前的字符是一個(gè)轉(zhuǎn)義序列并且對(duì)于編譯器有特殊的意義。
換行符(\n)在 System.out.println() 語(yǔ)句中經(jīng)常使用,在字符串打印出來(lái)后換行。
以下的表格展示了 Java 轉(zhuǎn)義序列:
轉(zhuǎn)義序列 | 描述 |
---|---|
\t | 在文本中插入一個(gè)標(biāo)簽。 |
\b | 在文本中插入一個(gè)退格。 |
\n | 在文本中插入一個(gè)換行符。 |
\r | 在文本中插入一個(gè)回車(chē)。 |
\f | 在文本中插入一個(gè)換頁(yè)。 |
\' | 在文本中插入一個(gè)單引號(hào)字符。 |
\\ | 在文本中插入一個(gè)反斜杠字符。 |
當(dāng)一個(gè)轉(zhuǎn)義序列遇到一個(gè)打印語(yǔ)句,編譯器就會(huì)相應(yīng)地解譯。
示例
如果你想把引號(hào)放入引號(hào)內(nèi),必須使用轉(zhuǎn)義序列, \” ,在內(nèi)部引用:
public class Test { public static void main(String args[]) { System.out.println("She said \"Hello!\" to me."); } }
這將產(chǎn)生以下結(jié)果:
She said "Hello!" to me.
Character 方法
以下列表是實(shí)現(xiàn) Character 類(lèi)所有子類(lèi)的重要的實(shí)例方法:
SN | 方法描述 |
---|---|
1 | isLetter() 確定具體的char值是一個(gè)字母 |
2 | isDigit() 確定具體的char值是一個(gè)數(shù)字 |
3 | isWhitespace() 確定具體的char值是一個(gè)空格 |
4 | isUpperCase() 確定具體的char值是一個(gè)大寫(xiě)字母 |
5 | isLowerCase() 確定具體的char值是一個(gè)小寫(xiě)字母 |
6 | toUpperCase() 返回指定字符值的大寫(xiě)形式 |
7 | toLowerCase() 返回指定字符值的小寫(xiě)寫(xiě)形式 |
8 | toString() 返回代表指定的字符值的一個(gè)String對(duì)象,即一個(gè)字符的字符串 |
字符串
字符串,它被廣泛應(yīng)用于 Java 編程,是一個(gè)字符序列。在 Java 編程語(yǔ)言中,字符串是對(duì)象。
Java 平臺(tái)提供了 String 類(lèi)來(lái)創(chuàng)建和操作字符串。
創(chuàng)建字符串
最直接的方式來(lái)創(chuàng)建一個(gè)字符串是這樣寫(xiě)的:
String greeting = "Hello world!";
當(dāng)你創(chuàng)建一個(gè)字符串時(shí),編譯器在這種情況下用它的值創(chuàng)建一個(gè) String 對(duì)象,如:"Hello world!'。
任何其他對(duì)象可以通過(guò)使用 new 關(guān)鍵字,并通過(guò)構(gòu)造函數(shù)創(chuàng)建 String 對(duì)象。 String 類(lèi)有11種構(gòu)造函數(shù)提供使用不同類(lèi)型的字符串的初始值,如一個(gè)字符數(shù)組。
public class StringDemo{ public static void main(String args[]){ char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.'}; String helloString = new String(helloArray); System.out.println( helloString ); } }
這將產(chǎn)生以下結(jié)果:
hello.
注 String 類(lèi)是不可變的,因此,一旦創(chuàng)建了 String 對(duì)象那么是不能改變的。如果需要大量修改字符的字符串,那么應(yīng)該使用 StringBuffer & StringBuilder 類(lèi)。
String 長(zhǎng)度
用于獲取有關(guān)對(duì)象的信息的方法稱(chēng)為存取方法??梢院妥址黄鹗褂玫囊粋€(gè)存取方法是 length() ,它返回包含在字符串對(duì)象中的字符數(shù)。
下面的兩行代碼被執(zhí)行之后,len 等于17:
public class StringDemo { public static void main(String args[]) { String palindrome = "Dot saw I was Tod"; int len = palindrome.length(); System.out.println( "String Length is : " + len ); } }
這將產(chǎn)生以下結(jié)果:
String Length is : 17
連接字符串
String類(lèi)包括用于連接兩個(gè)字符串的方法:
string1.concat(string2);
這返回一個(gè)新的字符串,即在 string1 結(jié)尾處添加 string2。還可以使用 concat()方法連接字符串,如:
"My name is ".concat("Zara");
字符串更常使用 “ + ” 運(yùn)算符連接在一起,如:
"Hello," + " world" + "!"
這將產(chǎn)生:
"Hello, world!"
看看下面的例子:
public class StringDemo { public static void main(String args[]) { String string1 = "saw I was "; System.out.println("Dot " + string1 + "Tod"); } }
這將產(chǎn)生以下結(jié)果:
Dot saw I was Tod
創(chuàng)建格式化字符串
已經(jīng)有 printf() 和 format() 方法來(lái)打印輸出格式的數(shù)字。 String 類(lèi)有一個(gè)等價(jià)的方法 format(),它返回一個(gè) String 對(duì)象,而不是一個(gè) PrintStream 對(duì)象。
使用字符串的靜態(tài) format() 方法允許創(chuàng)建可重復(fù)使用的格式化字符串,而不是一次性的 print 語(yǔ)句。例如,如果代替以下方法:
System.out.printf("The value of the float variable is " + "%f, while the value of the integer " + "variable is %d, and the string " + "is %s", floatVar, intVar, stringVar);
可以這樣寫(xiě):
String fs; fs = String.format("The value of the float variable is " + "%f, while the value of the integer " + "variable is %d, and the string " + "is %s", floatVar, intVar, stringVar); System.out.println(fs);
String 方法
這里是由 String 類(lèi)支持的方法列表:
SN | 方法及描述 |
---|---|
1 | char charAt(int index) 返回指定索引處的字符。 |
2 | int compareTo(Object o) 將這個(gè)字符串與另一個(gè)對(duì)象比較。 |
3 | int compareTo(String anotherString) 比較兩個(gè)字符串的字典順序。 |
4 | int compareToIgnoreCase(String str) 比較兩個(gè)字符串按字典順序,不區(qū)分大小寫(xiě)的差異。 |
5 | String concat(String str) 將指定的字符串串連到這個(gè)字符串的結(jié)尾。 |
6 | boolean contentEquals(StringBuffer sb) 返回true當(dāng)且僅當(dāng)該字符串代表相同的字符序列作為指定的StringBuffer。 |
7 | static String copyValueOf(char[] data) 返回表示所指定的數(shù)組中的字符序列的字符串。 |
8 | static String copyValueOf(char[] data, int offset, int count) 返回表示所指定的數(shù)組中的字符序列的字符串。 |
9 | boolean endsWith(String suffix) 測(cè)試此字符串是否以指定的后綴結(jié)束。 |
10 | boolean equals(Object anObject) 比較此字符串與指定的對(duì)象。 |
11 | boolean equalsIgnoreCase(String anotherString) 比較這個(gè)字符串到另一個(gè)字符串,忽略大小寫(xiě)的考慮。 |
12 | byte getBytes() 將此String解碼使用平臺(tái)的默認(rèn)字符集,并將結(jié)果存儲(chǔ)到一個(gè)新的字節(jié)數(shù)組中的字節(jié)序列。 |
13 | byte[] getBytes(String charsetName 將此String解碼使用指定的字符集的字節(jié)序列,并將結(jié)果存儲(chǔ)到一個(gè)新的字節(jié)數(shù)組。 |
14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 從這個(gè)字符串復(fù)制字符到目標(biāo)字符數(shù)組。 |
15 | int hashCode() 為這個(gè)字符串返回一個(gè)哈希代碼。 |
16 | int indexOf(int ch) 返回此字符串指定字符第一次出現(xiàn)處的索引。 |
17 | int indexOf(int ch, int fromIndex) 返回索引這個(gè)字符串中指定字符第一次出現(xiàn)處,指定索引處開(kāi)始搜索。 |
18 | int indexOf(String str) 返回此字符串指定子字符串的第一次出現(xiàn)處的索引。 |
19 | int indexOf(String str,int fromIndex) 返回這個(gè)字符串中指定子字符串的第一次出現(xiàn)處的索引,從指定的索引處開(kāi)始。 |
20 | String intern() 返回字符串對(duì)象的規(guī)范化表示。 |
21 | int lastIndexOf(int ch) 返回此字符串指定字符最后一次出現(xiàn)處的索引。 |
22 | int lastIndexOf(int ch, int fromIndex) 返回此字符串指定字符最后一次出現(xiàn)處的索引,從指定索引開(kāi)始向后搜索。 |
23 | int lastIndexOf(String str) 返回此字符串指定子字符串的最右邊出現(xiàn)處的索引。 |
24 | int lastIndexOf(String str, int fromIndex) 返回索引這個(gè)字符串中指定子字符串的最后出現(xiàn)處,從指定的索引開(kāi)始處向后搜索。 |
25 | int length() 返回此字符串的長(zhǎng)度。 |
26 | boolean matches(String regex) 判斷此字符串是否與給定的正則表達(dá)式匹配。 |
27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 測(cè)試兩個(gè)字符串的區(qū)域等于。 |
28 | boolean regionMatches(int toffset, String other, int ooffset, int len) 測(cè)試兩個(gè)字符串的區(qū)域都是相等的。 |
29 | String replace(char oldChar, char newChar) 返回從newChar更換oldChar所有出現(xiàn)在此字符串中產(chǎn)生一個(gè)新的字符串。 |
30 | String replaceAll(String regex, String replacement 替換此字符串中給定的正則表達(dá)式與給定替換相匹配的每個(gè)子字符串。 |
31 | String replaceFirst(String regex, String replacement) 替換此字符串匹配給定的正則表達(dá)式給定替換第一個(gè)子字符串。 |
32 | String[] split(String regex) 分割圍繞給定的正則表達(dá)式匹配的這個(gè)字符串。 |
33 | String[] split(String regex, int limit) 分割圍繞給定的正則表達(dá)式匹配的這個(gè)字符串。 |
34 | boolean startsWith(String prefix) 測(cè)試此字符串是否以指定的前綴開(kāi)頭。 |
35 | boolean startsWith(String prefix, int toffset) 測(cè)試此字符串是否以指定索引開(kāi)始的指定前綴開(kāi)始。 |
36 | CharSequence subSequence(int beginIndex, int endIndex) 返回一個(gè)新的字符序列,這個(gè)序列的子序列。 |
37 | String substring(int beginIndex) 返回一個(gè)新的字符串,它是此字符串的一個(gè)子字符串。 |
38 | String substring(int beginIndex, int endIndex) 返回一個(gè)新的字符串,它是此字符串的一個(gè)子字符串。 |
39 | char[] toCharArray() 這個(gè)字符串轉(zhuǎn)換為一個(gè)新的字符數(shù)組。 |
40 | String toLowerCase() 將所有在此字符串中的字符使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則小寫(xiě)。 |
41 | String toLowerCase(Locale locale) 將所有在此字符串中的字符使用給定Locale的規(guī)則小寫(xiě)。 |
42 | String toString() 這個(gè)對(duì)象(它已經(jīng)是一個(gè)字符串?。┓祷刈址问剑ㄟ@里是自己本身)。 |
43 | String toUpperCase() 使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將此String中所有的字符轉(zhuǎn)換為大寫(xiě)。 |
44 | String toUpperCase(Locale locale) 使用給定Locale的規(guī)則將此String中所有的字符轉(zhuǎn)換為大寫(xiě)。 |
45 | String trim() 返回字符串的一個(gè)副本,開(kāi)頭和結(jié)尾的空格去除。 |
46 | static String valueOf(primitive data type x) 返回傳遞的數(shù)據(jù)類(lèi)型參數(shù)的字符串表示形式。 |
相關(guān)文章
SpringBoot?整合RabbitMq?自定義消息監(jiān)聽(tīng)容器來(lái)實(shí)現(xiàn)消息批量處理
Spring Boot中提供了默認(rèn)的監(jiān)聽(tīng)器容器,但是有時(shí)候我們需要自定義監(jiān)聽(tīng)器容器,來(lái)滿(mǎn)足一些特殊的需求,比如批量獲取數(shù)據(jù),這篇文章主要介紹了SpringBoot?整合RabbitMq?自定義消息監(jiān)聽(tīng)容器來(lái)實(shí)現(xiàn)消息批量處理,需要的朋友可以參考下2023-04-04Java隨手筆記8之包、環(huán)境變量和訪問(wèn)控制及maven profile實(shí)現(xiàn)多環(huán)境打包
這篇文章主要介紹了Java隨手筆記8之包、環(huán)境變量和訪問(wèn)控制及maven profile實(shí)現(xiàn)多環(huán)境打包的相關(guān)資料,需要的朋友可以參考下2015-11-11SpringBoot 入門(mén)教程之引入數(shù)據(jù)傳輸層的方法
這篇文章主要介紹了SpringBoot 入門(mén)教程之引入數(shù)據(jù)傳輸層的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Springboot中靜態(tài)文件的兩種引入方式總結(jié)
這篇文章主要介紹了Springboot中靜態(tài)文件的兩種引入方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03ChatGPT-4.0未來(lái)已來(lái) 你來(lái)不來(lái)
最近聽(tīng)說(shuō)了一個(gè)非?;鸬募夹g(shù)ChatGPT4.0,今天這篇文章就給大家介紹一下ChatGPT究竟是什么東東,不得不說(shuō)ChatGPT是真的強(qiáng),下面就讓我們一起了解究竟什么是ChatGPT吧2023-03-03springboot?@Async?注解如何實(shí)現(xiàn)方法異步
這篇文章主要介紹了springboot?@Async?注解如何實(shí)現(xiàn)方法異步,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11SpringBoot @FixMethodOrder 如何調(diào)整單元測(cè)試順序
這篇文章主要介紹了SpringBoot @FixMethodOrder 調(diào)整單元測(cè)試順序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09