2011-06-24 77 views
0

我需要刪除一些在Java字符串的特定位置的字符。如何在Java中使用字符串的特定位置?

在Java中,C++中是否有相當於std::string.erase()的東西?如果沒有,有人可以給我一個如何循環每個字符串的快速示例,以便我可以計數它們並獲取每個字符的位置。

回答

2

您將無法改變String對象本身,因爲Strings是不可變Java中,但是,你可以根據從去除字符生成一個新的String對象舊String

或者,如果你喜歡的東西StringBuilder/StringBuffer,因爲這些類提供a delete(start,end) function

哦,這成爲可能的,因爲你問起一個String操作字符工作,有length()方法,讓你的長度String以及charAt(position)

+0

謝謝,很好的答案。 – mgpia

1

documentation開始。

有很多很好的方法,將讓你的字符(indexOf)指數和子(substring

看文件在C擦除++後,好像你可以使用2調用substring模仿那種行爲。您可能希望創建一個StringUtils類,並根據所需的API實現您自己的擦除。請注意,java中的字符串是不可變的,因此您無法完全複製該行爲 - 對字符串進行更改字符串的每個操作都會返回一個新字符串。

2

由於String本身是不可變的,沒有瑣碎的方式來做到這一點。

您可以使用substring構造新的Stringorig.substring(0, index1) + orig.substring(index2)

但是,如果反覆做字符串處理,然後StringBuilder可能會更好,無論是性能可用性方面的原因:

StringBuilder b = new StringBuilder(orig); 
b.replace(index1, index2, ""); 

StringBuilder是相當多的可變相當於String。早期版本使用StringBuffer,它有完全相同的方法但是同步,通常不需要。

0

可以使用toCharArray()方法(http://download.oracle.com/javase/6/docs/api/java/lang/String.html#toCharArray())來計算字符數。

更高級的字符串操作(擦除等..)你應該是一個StringBuilder/StringBuffer(http://download.oracle.com/javase/6/docs/api/java/lang/StringBuffer.html#deleteCharAt(int))

相關問題