Java相對於目前的一些語言來說是一門成熟的語言,因此,它擁有許多庫函數.在這,說一些常用的String類的一些函數,還會陸續補充,也歡迎大家補充修正.
String s = new String("bye") String s1 = new String("bye")
if(s==s1) 結果是false,因爲這是比較這兩個是不是同一個字符串,而不是比較內容
如果要比較兩個字符串的內容是否是一樣的,那麼需要用s.equals(s1)來判斷
s.compareTo(s1) 比較兩個字符串的大小,1表示s大,-1表示s1大,0表示相等
s.length() 獲取字符串的長度
s.charAt(index)訪問字符串裏的字符,index的範圍是length()-1
第一個字符的index是0,不能用for-each循環來遍歷字符串
s.substring(n)得到子串:得到從n號位置到末尾的全部內容
s.substring(b,e)得到子串:得到從b號位置到e號位置之前的內容
s.indexOf(c) 得到c字符第一次出現的位置(即左開始查找第一次出現的位置),-1表示不存在
s.lastIndexOf(c)得到c字符最後一次出現的位置(即從右邊開始找c第一次出現的位置)
s.indexOf(c,n)從n號位置開始尋找c字符第一次出現的位置
s.lastIndexOf(c,n)從第n位開始找查找c字符最後一次出現的位置(即從右邊開始找c字符第一次出現的位置)
s.indexOf(t) 找到字符串t第一次出現的位置
s.lastIndexOf(t) 找到字符串t最後一次出現的位置(從右邊開始找)
s.trim() 把字符串兩端的空格刪掉
s.replace(s,s1) 把s換成s1,即把s1複製給s
s.replaceAll("要替換的東西a的正則表達式","用b替換") 將一個字符串中的a全部變爲b
s.toLowerCase()把字符串的所有字母都換成小寫字母
s.toUpperCase() 把字符串裏的所有字母都換成大寫字母
s.startsWith(t) s.endsWith(t) 看這個字符串是不是以t子串開頭或結尾的
PS:字符串本身是不可修改的,s.trim(),s.replace(s,s1),s.replaceAll(s,s1),s.toLowerCase()
s.toUpperCase()這些不能直接對s進行修改,需要用一個新的串來存放修改後的串.
如:String s2 = s.*****().
replaceAll的一些用法
st.replaceAll("[0-9]",""); 將字符串中的數字全部刪掉
st.replaceAll("[^0-9]",""); 將字符串中除了數字以外的字符全部刪掉
st.replaceAll("[a-zA-Z]",""); 將字符串中的字母全部刪掉
st.replaceAll("[^a-zA-Z]",""); 將字符串中除了字母以外的字符全部刪掉
st.replaceAll("\\d",""); 將字符串中的數字全部刪掉
以上都是將某些字符給刪掉,如果不刪掉而是用其他字符替換掉,那麼就在第二個""中
輸入字符用來替換.
//d這個是由兩部分組成的,\ 轉義符加\d是一個正則表達式,標識所有數字及0-9.
之所以要加\是因爲在JAVA中一些特殊的符號如[回車]是沒有符號代表的,
所以需要轉義符這個概念.而像回車這類轉義符都是由\開始的,那麼就出現了第二個問題,
如果我要輸入的恰恰是\符號怎麼辦,那麼這個問題就還用轉義符來解決,所以\的轉義符就是\\.
其他的一些正則表達式
\\ 反斜槓
\t 間隔 ('\u0009')
\n 換行 ('\u000A')
\r 回車 ('\u000D')
\d 數字 等價於 [0-9]
\D 非數字 等價於 [^0-9]
\s 空白符號 [\t\n\x0B\f\r]
\S 非空白符號 [^\t\n\x0B\f\r]
\w 單獨字符 [a-zA-Z_0-9]
\W 非單獨字符 [^a-zA-Z_0-9]
\f 換頁符
\e Escape
\b 一個單詞的邊界
\B 一個非單詞的邊界
\G 前一個匹配的結束