JavaScript中的charCodeAt()
方法返回給定索引處字符的數字Unicode值(例如,Go lang等效於JavaScript的charCode()方法
"s".charCodeAt(0) // returns 115
我將如何去通過獲得在圍棋中相同的字符串/字母數字Unicode值?
JavaScript中的charCodeAt()
方法返回給定索引處字符的數字Unicode值(例如,Go lang等效於JavaScript的charCode()方法
"s".charCodeAt(0) // returns 115
我將如何去通過獲得在圍棋中相同的字符串/字母數字Unicode值?
Go中的字符類型是rune
,它是int32
的別名,因此它已經是一個數字,只是將其打印出來。
您仍需要一種方法來獲取指定位置上的字符。最簡單的方法是將string
轉換爲您可以索引的[]rune
。要將string
轉化爲符文,只需使用類型轉換[]rune("some string")
:
fmt.Println([]rune("s")[0])
打印:
115
如果你想它以字符,請使用%c
格式字符串:
fmt.Println([]rune("absdef")[2]) // Also prints 115
fmt.Printf("%c", []rune("absdef")[2]) // Prints s
另請注意,string
上的for range
迭代了字符串的符號,因此您也可以使用它。這比將整個string
到[]rune
更高效:
i := 0
for _, r := range "absdef" {
if i == 2 {
fmt.Println(r)
break
}
i++
}
包成一個功能:
func charCodeAt(s string, n int) rune {
i := 0
for _, r := range s {
if i == n {
return r
}
i++
}
return 0
}
嘗試這些在Go Playground。
還要注意的是string
S IN圍棋存儲在內存中的[]byte
這是文字的UTF-8編碼的字節序列(閱讀更多信息博客文章Strings, bytes, runes and characters in Go)。如果你保證string
使用的代碼小於127的字符,你可以簡單地使用字節。這是在Go索引string
索引它的字節,因此例如"s"[0]
是's'
的字節值,它是115
。
fmt.Println("s"[0]) // Prints 115
fmt.Println("absdef"[2]) // Prints 115
謝謝。是的......我知道一個字符串被自動處理爲一個字符數組。 JavaScript也這樣做。 – Knights
@JheneKnights不,在一個字符串中存儲的是字節片段,它是字符的utf-8編碼字節序列。有關更多詳細信息,請參閱此博客帖子:[Go中的字符串,字節,符文和字符](http://blog.golang.org/strings)。所以獲得'符文'需要解碼字節。 – icza
'charCodeAt'函數返回字節索引'n'處的符文,而不是符號索引'n'。見https://play.golang.org/p/QDLzyqSxkI –