Go语言 将字符串转换为字符串类型的切片

hsgswve4  于 2022-12-07  发布在  Go
关注(0)|答案(4)|浏览(359)

在下面的代码中,当我检查s[i]时,它给我的是二进制数而不是字符。代码仍然可以工作,但我如何才能让s[i]返回一个字符,同时仍然使用s类型字符串作为参数呢?

func main() {

        var ip string
        fmt.Println("Enter string:")
        fmt.Scanf("%s\n", &ip)
        ip = strings.ToLower(ip)
        fmt.Println(isP(ip))
    }
    //Function to test if the string entered is a Palindrome

    func isP(s string) string {
        mid := len(s) / 2
        last := len(s) - 1
        for i := 0; i < mid; i++ {
            if s[i] != s[last-i] {
                return "NO. It's not a Palimdrome."
            }
        }
        return "YES! You've entered a Palindrome"
    }
cnjp1d6j

cnjp1d6j1#

如果要将string转换为[]string,也可以使用strings.Split(s,"")

a14dhokn

a14dhokn2#

例如,

package main

import (
    "fmt"
    "strings"
)

func isPalindrome(s string) bool {
    s = strings.ToLower(s)
    r := []rune(s)
    mid := len(r) / 2
    last := len(r) - 1
    for i := 0; i < mid; i++ {
        if r[i] != r[last-i] {
            return false
        }
    }
    return true
}

func main() {
    var s string
    fmt.Println("Enter string:")
    fmt.Scanf("%s\n", &s)
    fmt.Println(s, isPalindrome(s))
}

输出量:

Enter string:
123
123 false
Enter string:
121
121 true
Enter string:
abba
abba true
Enter string:
世界世
世界世 true

Go语言字符string是UTF-8编码的字符序列。UTF-8是可变长度字符编码。s[i]是字节而不是字符。rune(码位)是字符。使用string(r)可将rune转换为可打印的string。例如,

package main

import (
    "fmt"
)

func main() {
    s := "Hello, 世界"
    for _, r := range s {
        fmt.Print(string(r))
    }
    fmt.Println()
}

输出量:

Hello, 世界

参考文献:
Unicode - Wikipedia
Strings, bytes, runes and characters in Go

o0lyfsai

o0lyfsai3#

正如上面的注解中所提到的,可以使用string(s[i])将其转换为字符,或者可以使用fmt.Printf("%c", s[i])打印由相应的Unicode码位表示的字符。

0md85ypi

0md85ypi4#

可以使用string()返回字符。
示例:fmt.Println(string(s[i]))

相关问题