Подтвердить что ты не робот

Как индексировать символы в строке Golang?

Как получить вывод "E" вместо 69?

package main

import "fmt"

func main() {
    fmt.Print("HELLO"[1])
}

У Golang есть функция для преобразования char в байт и наоборот?

4b9b3361

Ответ 1

Интерпретируемые строковые литералы - это символьные последовательности между двойными кавычками "", использующие (возможно многобайтовую) кодировку UTF-8 отдельных символов. В UTF-8 символы ASCII являются однобайтовыми, соответствующими первым 128 символам Unicode. Строки ведут себя как кусочки байтов. Руна - это целочисленное значение, идентифицирующее кодовую точку Unicode. Следовательно,

package main

import "fmt"

func main() {
    fmt.Println(string("Hello"[1]))              // ASCII only
    fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
    fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
}

Выход:

e
e
界

Читать:

Перейдите в раздел " Спецификация языка программирования" в разделе " Преобразования".

Блог Go: строки, байты, руны и символы в Go

Ответ 2

Как насчет this?

fmt.Printf("%c","HELLO"[1])

Как указывает Питер, чтобы разрешить больше, чем просто ASCII:

fmt.Printf("%c", []rune("HELLO")[1])

Ответ 3

Go действительно не имеет типа символа как такового. байт часто используется для символов ASCII, а руна используется для символов Unicode, но они оба являются просто псевдонимами для целых типов (uint8 и int32). Поэтому, если вы хотите заставить их печатать как символы вместо цифр, вам нужно использовать Printf("%c", x). Спецификация формата %c работает для любого целочисленного типа.

Ответ 4

Может быть сделано через нарезку тоже

package main

import "fmt"

func main() {
    fmt.Print("HELLO"[1:2])
}

Ответ 5

Общее решение для интерпретации char как строки: string("HELLO"[1]).

Богатое решение также работает, конечно.

Ответ 6

Вы также можете попробовать ввести его со строкой.

package main

import "fmt"

func main() {
    fmt.Println(string("Hello"[1]))
}

Ответ 7

Попробуйте это, чтобы получить характеристики по их индексу

package main

import (
      "fmt"
      "strings"
)

func main() {
   str := strings.Split("HELLO","")
    fmt.Print(str[1])
}

Ответ 8

Другое решение изолировать символ в строке

package main
import "fmt"

   func main() {
        var word string = "ZbjTS"

       // P R I N T 
       fmt.Println(word)
       yo := string([]rune(word)[0])
       fmt.Println(yo)

       //I N D E X 
       x :=0
       for x < len(word){
           yo := string([]rune(word)[x])
           fmt.Println(yo)
           x+=1
       }

}

для строковых массивов:

fmt.Println(string([]rune(sArray[0])[0]))

//= прокомментированная строка