String物件的內容無法更改
String物件產生後,內容就無法改變,連接運算或使用String類別中的方法,都屬於新的字串。
如果要能改變字串內容的物件,就需要使用StringBuffer或StringBuilder。
StringBuffer類別
StringBuffer():建立一個不含任何字元的字串。
StringBuffer(String str):依str的內容建立字串。
package com.mycompany.testfive;
public class testFive {
public static void main(String[] args) {
String tire="這是一個輪胎";
StringBuffer tire1= new StringBuffer(tire);
StringBuffer tire2= new StringBuffer();
System.out.println("tire1 : "+tire1);
System.out.println("tire2 : "+tire2);
System.out.println("tire : "+tire);
}
}
tire2為空字串
提供可新增內容的append()、insert(),及刪除內容delete()……等。
新增
append()
append()方法會從字串尾端新增新的內容。
package com.mycompany.testfive;
public class testFive {
public static void main(String[] args) {
StringBuffer tire= new StringBuffer("這是一個輪胎");
System.out.println(tire.append("的模型"));
}
}
insert()
insert()方法會把資料插入到指定索引碼的位置前面。
package com.mycompany.testfive;
public class testFive {
public static void main(String[] args) {
StringBuffer tire= new StringBuffer("這是一個輪胎");
System.out.println(tire.insert(4,"非常大的"));
}
}
delete(int start, int end)
delete()可刪除從start到end-1索引碼之間的字元。
package com.mycompany.testfive;
public class testFive {
public static void main(String[] args) {
StringBuffer tire= new StringBuffer("這是一個輪胎");
System.out.println(tire.delete(2,4));
}
}
replace(int start, int end, String str)
replace()可使用str字串,取代從start到end-1索引碼之間的字元。
package com.mycompany.testfive;
public class testFive {
public static void main(String[] args) {
StringBuffer tire= new StringBuffer("這是一個輪胎");
System.out.println(tire.replace(2,4,"兩個"));
}
}
reverse()
反轉整個字串的內容。
package com.mycompany.testfive;
public class testFive {
public static void main(String[] args) {
StringBuffer tire= new StringBuffer("這是一個輪胎");
System.out.println(tire.reverse());
System.out.println(tire.reverse());
}
}
反轉兩次後,變為本來的順序。
StringBuilder
與StringBuffer的用途、方法相同,但其不保證在多執行緒的環境能正常運作。
規則表示法(Regular Expression)
檢查輸入的資料是否符合特定格式。
如果使用String類別中的matches()方法及規則表示法,能更好表達出比對的規則。
package com.mycompany.testsix;
import java.util.*;
public class testSix {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s,str;
System.out.println("請輸入樣式:");
s=sc.next();
System.out.println("請輸入字串:");
str=sc.next();
if(str.matches(s))
System.out.println("true");
else
System.out.println("false");
}
}
比對字串內容
限制出現次數
多了一個e所以錯誤,因為?只能0或1次
預先定義的字元種類
\W為非英文字母也非數字,但這邊輸入1,所以錯誤。
參考資料:
最新java程式語言第六版