如何在 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 上取得。