在下面的代码中,当我检查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"
}
答案 0 :(得分:2)
如果你想将字符串转换为[]字符串,你也可以只使用strings.Split(s,&#34;&#34;)
答案 1 :(得分:1)
例如,
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, 世界
参考文献:
答案 2 :(得分:0)
如上所述,您可以使用string(s[i])
将其转换为字符,也可以使用fmt.Printf("%c", s[i])
打印由相应的Unicode代码点表示的字符。
答案 3 :(得分:0)
您可以使用 string() 返回字符。
示例:setAttributes(elem, {"src": "http://example.com/something.jpeg", "height": "100%", ...});