¿Cómo obtener una salida "E" en lugar de 69?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
¿Golang tiene la función de convertir un carácter en un byte y viceversa?
Los literales de cadena interpretados son secuencias de caracteres entre comillas dobles "" que utilizan la codificación UTF-8 (posiblemente de varios bytes) de caracteres individuales. En UTF-8, los caracteres ASCII son de un solo byte correspondientes a los primeros 128 caracteres Unicode. Las cadenas se comportan como porciones de bytes. Una runa es un valor entero que identifica un punto de código Unicode. Por lo tanto,
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
}
Salida:
e
e
界
Leer:
Vaya a la sección Especificación del lenguaje de programación sobre conversiones .
También se puede hacer mediante rebanado
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
NOTA: Esta solución solo funciona para caracteres ASCII.
"हैलो"[:1]
te daGo realmente no tiene un tipo de personaje como tal. byte se usa a menudo para caracteres ASCII y rune se usa para caracteres Unicode, pero ambos son solo alias para tipos enteros (uint8 e int32). Entonces, si desea forzar que se impriman como caracteres en lugar de números, debe usar
Printf("%c", x)
. La%c
especificación de formato funciona para cualquier tipo de entero.fuente
También puedes intentar encasillarlo con una cuerda.
package main import "fmt" func main() { fmt.Println(string("Hello"[1])) }
fuente
La solución general para interpretar un carácter como una cadena es
string("HELLO"[1])
.La solución de Rich también funciona, por supuesto.
fuente
Intente esto para obtener los personajes por su índice
package main import ( "fmt" "strings" ) func main() { str := strings.Split("HELLO","") fmt.Print(str[1]) }
fuente
Los caracteres de cadena son runas, por lo que para imprimirlos, debe convertirlos nuevamente en String.
fmt.Print(string("HELLO"[1]))
fuente
Otra solución para aislar un carácter en una cadena
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 } }
para matrices de cadenas también:
fmt.Println(string([]rune(sArray[0])[0]))
// = línea comentada
fuente
len("cafés")
>len([]rune("cafés"))
y puede reconvertir la cadena en cada iteración para, O (n²). Solo hazlofor _, r := range word { fmt.Printf("%c", r) }
. Si realmente quisieras hacer un bucle con un índicefor x := 0; x < limit; x++
. Por favor, aprende los conceptos básicos de un idioma antes de responder preguntas