簡體   English   中英

如何訪問字符串作為字符值

[英]How to access string as character value

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

我想遍歷一個字符串並返回字符值。 我如何,不返回每個字母的數值,並返回實際字符​​?

現在我得到了這個

 0 72 72
 1 101 101
 2 108 108
 3 108 108
 4 111 111

我想要的輸出是

 0 h h
 1 e e
 2 l l
 3 l l
 4 o o

 package main

 import "fmt"

 func main() {

    str := "Hello"
    for i, elem := range str {
        fmt.Println(i, str[i], elem)
    }

    for elem := range str {
        fmt.Println(elem)
    }   
 }

謝謝,

對於陳述

對於字符串值,“range”子句迭代從字節索引0開始的字符串中的Unicode代碼點。在連續迭代中,索引值將是連續UTF-8編碼的代碼點的第一個字節的索引。字符串和rune類型的第二個值將是相應代碼點的值。 如果迭代遇到無效的UTF-8序列,則第二個值將是0xFFFD,即Unicode替換字符,下一次迭代將在字符串中前進一個字節。

例如,

package main

import "fmt"

func main() {
    str := "Hello"
    for _, r := range str {
        c := string(r)
        fmt.Println(c)
    }
    fmt.Println()
    for i, r := range str {
        fmt.Println(i, r, string(r))
    }
}

輸出:

H
e
l
l
o

0 72 H
1 101 e
2 108 l
3 108 l
4 111 o

package main使用Printf表示您要打印字符。

import "fmt"

func main() {

        str := "Hello"
        for i, elem := range str {
                fmt.Printf("%d %c %c\n", i, str[i], elem)
        }

}

迭代字符串中字符的方式是可行的(盡管str [i]和elem是彼此的重復)。 您擁有正確的數據。

為了使其正確顯示,您只需要使用正確的格式輸出(即解釋為unicode字符而不是int)。

更改:

fmt.Println(i, str[i], elem)

至:

fmt.Printf("%d %c %c\n", i, str[i], elem)

%c是每個Printf文檔對應的Unicode代碼點表示的字符http//golang.org/pkg/fmt/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM