刪除 Java StringBuilder 的最後一個字符
一、概述
當我們想在 Java 中構建字符串時,我們通常會選擇方便的StringBuilder
來完成這項工作。
假設我們有一個包含一些字符串段的StringBuilder
序列,並且我們想從中刪除最後一個字符。在這個快速教程中,我們將探索三種方法來做到這一點。
2. 使用StringBuilder
的deleteCharAt()
方法
StringBuilder
類具有deleteCharAt()
方法。它允許我們在想要的位置移除字符.
deleteCharAt()
方法只有一個參數:我們要刪除的char
索引。
因此,如果我們將最後一個字符的索引傳遞給該方法,我們就可以刪除該字符。為簡單起見,我們將使用單元測試斷言來驗證它是否按預期工作。
所以接下來,讓我們創建一個測試來檢查它是否有效:
StringBuilder sb = new StringBuilder("Using the sb.deleteCharAt() method!");
sb.deleteCharAt(sb.length() - 1);
assertEquals("Using the sb.deleteCharAt() method", sb.toString());
如上面的測試所示,我們將最後一個字符的索引 ( sb.length() -1
) 傳遞給deleteCharAt()
方法,並期望刪除結束的感嘆號 ( !
)。
如果我們運行測試,它就會通過。所以, deleteCharAt()
解決了這個問題。
3. 使用StringBuilder
的replace()
方法
StringBuilder
的[replace()](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuilder.html#replace(int,int,java.lang.String))
方法允許我們用給定的字符串替換序列子字符串中的字符。該方法接受三個參數:
-
start
索引 - 開始索引,包括 -
end
index – 結束索引,排他 -
replacement
- 用於替換的字符串
假設序列中最後一個字符的索引是lastIdx.
如果我們想刪除最後一個字符,我們可以傳遞lastIdx
作為開始索引, lastIdx+1
作為結束索引,以及一個空字符串“”
作為replace()
的替換:
StringBuilder sb = new StringBuilder("Using the sb.replace() method!");
int last = sb.length() - 1;
sb.replace(last, last + 1, "");
assertEquals("Using the sb.replace() method", sb.toString());
現在,如果我們試一試,上面的測試就通過了。因此,可以使用replace()
方法來解決問題。
4. 使用StringBuilder
的substring()
方法
我們可以使用StringBuilder
的[substring()](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuilder.html#substring(int,int))
方法從字符串的給定start
和end
索引中獲取子序列。該方法需要兩個參數,開始索引(包括)和結束索引(不包括)。
值得一提的是substring()
方法返回一個新的String
對象。換句話說, substring()
方法不會修改StringBuilder
對象。
我們可以將 0 作為start
索引,將最後一個字符的索引作為end
索引傳遞給substring()
方法,以獲取最後一個字符被截斷的字符串:
StringBuilder sb = new StringBuilder("Using the sb.substring() method!");
assertEquals("Using the sb.substring() method", sb.substring(0, sb.length() - 1));
//the stringBuilder object is not changed
assertEquals("Using the sb.substring() method!", sb.toString());
如果我們執行它,測試就會通過。
正如我們在測試中看到的,即使substring()
返回的String
沒有最後一個字符 ( !
),原始的StringBuilder
也沒有改變。
5. 結論
在這篇簡短的文章中,我們學習瞭如何從StringBuilder
序列中刪除最後一個字符。
像往常一樣,這裡提供的所有代碼片段都可以 在 GitHub 上找到。