字串處理 String

一些常用的字串的處理

如果有一個字串為 ss
String ss = "天地玄黃宇宙洪荒
日月盈昃辰宿列張";

//試試看是否包含字串 "宇宙"

Boolean ans = ss.contains("宇宙");  //如果有包含會反回true, 如果沒有包含會反回false.
int ans = ss.indexOf("宇宙") ; //如果有包含會反回"宇宙"在ss中的位置,所以ans=4,如果沒有包含ans=-1。

//試試看字中是否為"宇宙"開頭
Boolean ans = ss.startsWith("宇宙");// 如果是"宇宙",反回true,如果不是反回false。

//試試看字中是否為"宇宙"結尾
Boolean ans = ss.endsWith("宇宙"); // 如果是"宇宙"結尾,反回true,如果不是反回false。
//試試看以宇宙來分段字串

String[] ans=ss.split("宇宙"); 
//反回兩個字串
ans[0]="天地玄黃
ans[1]="洪荒日月盈昃辰宿列張" 

//使用正則表示式
ans = ss.matches(".*宇宙.*"); //.*表示任何字元,也就是"宇宙"前後包任何字元都反回true。
ans = ss.matches("宇宙.*");  //等同於宇宙開頭的字串,所以反回false。



----------------------------------------------------------------------

說明一下正則表示(regular expression),是一種尋找字串的代碼系統。學會它,在處理字串時會可怕的方便。

例如英文中 cat locate monkey apple.
我們如果想找cat這個字,以人的大腦來說很容易就找到。但如果要下指令叫電腦找可能就會找到 locate 這個字了。如果不想要找到locate,就要指字cat前後是空格。為了方便下這樣的指令,正則表示就出現了。
以正則表示來說只要下 \scat\s
就可以找到cat而不會找到locate


以下例出個人常用的幾個代碼。

http://myregexp.com/   
在這個網頁上可以查詢正則表示是否如我們所預期。


. 代表任意字元


例如有一個字串 alkjsdjajalkfjaslkjfashjqweiufoajkldsvlsjv

我們要尋找 .ja 就會找到 dja 和 fja

我們要尋找 ..ja 就會找到 sdja 和 kfja


? 代表出現零次或一次

* 代表出現零次或一次以上

+ 代表出現一次或一次以上



例如有一個字串 alkjsdjajalkfjaslkjfashjqweiufoajkldsvlsjv

我們要尋找 .?ja 就會找到 djaja 和 fja

我們要尋找 .*ja 就會找到 alkjsdjajalkfja

我們要尋找 .+ja 就會找到 alkjsdjajalkfja




[ ] 中括號代表尋找中括號內的任何文字。 如[ab]代表a或b。如[1-9]代表1到9的任意數字

( ) 真接舉例,在字串 alkjsdjajalkfjaslkjfashjqweiufoajkldsvlsjv

尋找(ja) 會找到 jaja和ja

尋找a(ja) 會找到 aja




\w 代表字母跟數字,等同於[A-Za-z1-9]

\d 代表數字,等同於[0-9]

\s 代表空白鍵



如果有一字串 alkjsd[jaj]alkfja[slkj]fas[hj]qweiufoajkldsvlsjv

現在我們想要所有中括號中的文字要這樣寫 \[\w*\]


在java中可以使用pattern


String s="alkjsd[jaj]alkfja[slkj]fas[hj]qweiufoajkldsvlsjv";

Pattern pattern = Pattern.compile("\\[\w*\\]");


Matcher matcher = pattern.matcher(s);
while (matcher.find()) {

System.out.println(matcher.group()+"\n");

}


印出

[jaj]

[slk]

[hj]




 







 

留言

這個網誌中的熱門文章

python 找圖自動點擊

Python pyserial 抓取系統內的 COM PORT

VBA EXCEL 工作表變化 馬上執行 的作法 Worksheet_Change