2011-03-18 47 views
0

讓我們說,我想在一個「for」循環來創建一個新的字符串,鏈接字符串中的Java

新的字符串將是一個exsist字符串,將改變depanding一個條件和位置的變化循環。

我怎樣才能插入到一個存在的字符串新的字符?

我經歷了與字符串有關的整個方法總結,並沒有得到我的答案。

編輯:原來我張貼錯誤的方法的Java 4鏈接。我使用最新版本的Java。

謝謝

+1

您正在尋找這樣用java 4的一種方式?或者你錯誤地鏈接了錯誤的javadoc? – 2011-03-18 13:42:00

+0

錯誤,這就是谷歌給我的,現在我看到它是舊版本。謝謝你提到。 – 2011-03-18 13:45:08

+1

@Leo,我認爲1.4.2之後的版本是5.0;)對於這個問題沒有「Java 4」或「Java 5」,有一個「Java 6」;) – 2011-03-18 14:11:54

回答

10

要麼使用StringBuilderString.concat(String)

例子:

StringBuilder sb = new StringBuilder(); 
Iterator<Integer> iterator = 
    Arrays.asList(1, 2, 3, 4, 5, 6, 7).iterator(); 
if(iterator.hasNext()){ 
    sb.append(iterator.next()); 
    while(iterator.hasNext()){ 
     sb.append(',').append(iterator.next()); 
    } 
} 
final String joined = sb.toString(); 

而關於谷歌搜索的javadoc:谷歌將幾乎總是返回古1.4版本。如果您僅搜索類名稱這樣的關鍵字。搜索classname /6,例如StringBuilder /6,您將獲得當前版本。

+1

+1 for stringbuilder in loop – 2011-03-18 13:41:44

+0

原始字符串會在每個循環中更新嗎? – 2011-03-18 13:43:51

+0

StringBuffer已同步,非線程環境的性能開銷。 – 2011-03-18 13:45:32

1

嘗試StringBufferStringBuilder。你需要在Java 1.4中編碼嗎?

你也可以試試這個(雖然我強烈建議StringBuilder/StringBuffer方法):

String s = "somestring"; 
s = s.substring(0, 4) + " " + s.substring(4); //result: "some string" 

你需要找到一個方法substring()指數以某種方式(使用indexOflastIndexOf)。

3

我如何可以插入到存在串 新的字符?

你不行。 Java字符串被設計爲不可變的。您必須使用像StringBuilder這樣的可變類,或者用新的修改版本替換原始字符串。

+0

那麼......有反射...... * ahem * ;-) – berry120 2011-03-18 13:49:21

+3

@ berry120:當然,如果你不介意去地獄...... – 2011-03-18 13:53:23

+0

@莓甚至反射不會讓你追加數據到字符串,因爲價值領域是最終的。但你可以改變現有的字符 – 2011-03-18 13:55:45

2

使用StringBuffer性能方面的原因:

// new StringBuffer 
StringBuffer buf = new StringBuffer("bla blub bla"); 

// insert string 
buf.insert(9, " huhu "); 

// append strings 
buf.append(" at the end"); 

// Buffer to string 
String result = buf.toString(); 
+1

不,使用Java 1.5或更高版本,請使用['StringBuilder'](http://download.oracle.com/javase/6/docs/api /java/lang/StringBuilder.html)。除了幾個角落案例之外,它的速度更快 – 2011-03-18 13:52:43

+2

使用'StringBuilder'獲得更好的性能(請參閱上文):) – Thomas 2011-03-18 13:54:43

+0

我把'StringBuffer'記錄在案,因爲他發佈了一個鏈接到1.4 java docs – felixsigl 2011-03-21 08:32:30