2013-06-26 221 views
1

我開始學習去了,我想實現一些算法。我可以遍歷字符串,然後獲取字符,但這些字符是Unicode編號。迭代過去的字符串和從字符串中去除字符串

如何在字符串中連接字符爲字符串?你有參考嗎?我無法在官方網頁上找到有關原始圖片的任何內容。

+0

那麼這到底是什麼「炭」? Go中沒有這種類型 – newacct

回答

6

使用range對字符串進行迭代可爲您提供Unicode字符,而使用索引對 字符串進行迭代可爲您提供字節。請參閱規格 runesstrings以及conversions

正如新白癡提到的,字符串可以使用+ operator連接在一起。

從字符到字符串的轉換是雙重的。你可以轉換 一個byte(或字節序列)爲字符串:

string(byte('A')) 

,或者你可以轉換rune(或符文序列)轉換爲字符串:

string(rune('µ')) 

不同的是,符文代表Unicode字符,而字節表示 8位值。

但是,所有這些都在上面鏈接的規範的各個部分中提到。 這很容易理解,你一定要閱讀它。

+0

感謝您解釋使用索引和「範圍」迭代的區別 –

2

使用+

str:= str + "a" 

你可以嘗試這樣的事情:

string1 := "abc" 
character1 := byte('A') 
string1 += string(character1) 

即使this answer可能會有所幫助。

3

可以將[]rune轉化爲直接的字符串:

string([]rune{'h', 'e', 'l', 'l', 'o', '☃'}) 

http://play.golang.org/p/P9vKXlo47c

作爲參考,它在圍棋規範的轉換部分,標題爲「轉換和從部分字符串類型」

http://golang.org/ref/spec#Conversions

爲串聯,你可能不希望精讀使用+運算符鏈接每個單個字符,因爲這將在引擎蓋下執行大量複製。如果你一次只符合一個符文,並且你沒有建立一個符文的中間片段,那麼你很可能想要使用一個bytes.Buffer,它有一個WriteRune這種方法。 http://golang.org/pkg/bytes/#Buffer.WriteRune