iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0

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);
    }
}

https://ithelp.ithome.com.tw/upload/images/20221009/20152201GpL66DcUq2.png
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("的模型"));
    }
}

https://ithelp.ithome.com.tw/upload/images/20221009/20152201rXuD0lYbwO.png

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,"非常大的"));
    }
}

https://ithelp.ithome.com.tw/upload/images/20221009/20152201ZkaztB6SDC.png

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));
    }
}

https://ithelp.ithome.com.tw/upload/images/20221009/20152201rQ6i4y0HL1.png

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,"兩個"));
    }
}

https://ithelp.ithome.com.tw/upload/images/20221009/20152201JX0V1ahpXF.png

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());
    }
}

https://ithelp.ithome.com.tw/upload/images/20221009/20152201cIqkj1embe.png
反轉兩次後,變為本來的順序。

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");
    }
}

比對字串內容
https://ithelp.ithome.com.tw/upload/images/20221009/20152201KsajR6mLf3.png

限制出現次數
https://ithelp.ithome.com.tw/upload/images/20221009/20152201hNH29b5Kxy.png

https://ithelp.ithome.com.tw/upload/images/20221009/20152201JCiuXTRPkx.png

https://ithelp.ithome.com.tw/upload/images/20221009/201522014GXf9deIME.png
多了一個e所以錯誤,因為?只能0或1次

預先定義的字元種類
https://ithelp.ithome.com.tw/upload/images/20221009/20152201V5zfgzn1mf.png

https://ithelp.ithome.com.tw/upload/images/20221009/20152201QknsFKonEd.png

https://ithelp.ithome.com.tw/upload/images/20221009/20152201dO5IuRfWGo.png
\W為非英文字母也非數字,但這邊輸入1,所以錯誤。

參考資料:
最新java程式語言第六版


上一篇
String類別的方法
下一篇
繼承(上)
系列文
大學每日任務:攝取新知識及學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言