如何在 Java 中將字串轉換為 StringBuilder,反之亦然
1. 概述
使用String是 Java 程式設計的一個基本面向。 StringBuilder String用於String操作的StringBuilder實用程序,例如串聯String反轉等。
在本快速教程中,我們將探討如何有效地執行這些轉換。
2.問題介紹
在Java中, String是不可變的,這意味著一旦創建了對象,就無法更改。另一方面, StringBuilder是一個可變的字元序列,它允許我們修改內容而不創建新的物件。
因此,我們經常將String轉換為StringBuilder進行操作,然後將StringBuilder物件轉換回String以獲得結果。
我們將首先檢查StringBuilder到String轉換,然後反之亦然。最後,我們將使用轉換技術來解決實際問題。
為簡單起見,我們將使用單元測試斷言來驗證我們是否獲得了預期結果。
3. 將StringBuilder轉換為String
呼叫StringBuilder.toString()方法是將StringBuilder物件轉換為String最直接方法:
StringBuilder sb = new StringBuilder("Converting SB to String");
String result = sb.toString();
assertEquals("Converting SB to String", result);
toString()方法傳回一個String ,其中包含StringBuilder物件序列中相同順序的所有字元。
然而,有時我們只轉換StringBuilder物件序列中的一個段。在這種情況下,我們可以使用StringBuilder的substring()方法:
result = sb.substring(11, 13);
assertEquals("SB", result);
在此範例中,我們將開始和結束索引傳遞給substring()方法,以從StringBuilder的字元序列中取得所需的部分。
接下來,讓我們看看相反的方向,如何將String轉換為StringBuilder 。
4. 將String轉換為StringBuilder
要將String轉換為StringBuilder ,我們可以簡單地將String物件傳遞給StringBuilder的建構子:
String input = "Converting String to SB";
StringBuilder sb = new StringBuilder(input);
assertEquals(input, sb.toString());
或者,我們可以先建立一個空的StringBuilder實例,然後利用append()方法將String值附加到StringBuilder的字元序列:
String input = "C C++ C# Ruby Go Rust";
StringBuilder sb = new StringBuilder().append(input);
assertEquals(input, sb.toString());
當我們的目標是從一個String建立StringBuilder物件時,與建構函數參數方法相比,這可能看起來有點尷尬。但是,將多個String值轉換為StringBuilder物件會很方便。接下來,我們來看一個例子:
String[] strings = new String[] { "C ", "C++ ", "C# ", "Ruby ", "Go ", "Rust" };
StringBuilder sb2 = new StringBuilder();
for (String str : strings) {
sb2.append(str);
}
assertEquals(input, sb2.toString());
如上面的範例所示,我們希望將String值陣列轉換為StringBuilder 。因此,在建立空StringBuilder後,我們在迴圈中呼叫append() ,將String陣列中的所有元素追加到StringBuilder的序列中。
5. 一個實際例子:連接和反轉
最後,讓我們用所學的轉換技巧來解決一個實際問題。
假設我們給了三個輸入String值。我們需要執行一些轉換並按照以下步驟取得String結果:
- 首先,使用
” | “連接三個字String。” | “作為分隔符 - 反轉連接結果
這是一個典型的String轉換問題,我們可以使用StringBuilder.
接下來我們來看看是如何解決的:
String str1 = "cba";
String str2 = "^_*";
String str3 = "zyx";
StringBuilder sb = new StringBuilder(str1)
.append(" | ")
.append(str2)
.append(" | ")
.append(str3)
.reverse();
String result = sb.toString();
assertEquals("xyz | *_^ | abc", result);
上面的程式碼使用建構函式建立了一個帶有str1的StringBuilder ,使用append()追加分隔符號和其他String ,然後呼叫reverse()來反轉字元序列。
最後, sb.toString()將StringBuilder轉換回String 。
5. 結論
在本文中,我們探討如何在String和StringBuilder.透過理解這些轉換,我們可以在 Java 程式中有效地操作String 。
與往常一樣,範例的完整原始程式碼可在 GitHub 上取得。