Go中如何判断一个字符串是全大写还是小写?
How to check if a string is all upper or lower case in Go?
在 Golang 中检查字符串中的所有字符是大写还是小写的简单方法是什么?
另外,字符串中有标点符号怎么处理?
查看这些示例:
package main
import (
"fmt"
"unicode"
)
func main() {
s := "UPPERCASE"
fmt.Println(s.IsUpper()) // Should print true
s = "lowercase"
fmt.Println(s.IsUpper()) // Should print false
s = "lowercase"
fmt.Println(s.IsLower()) // Should print true
s = "I'M YELLING AT YOU!"
fmt.Println(s.IsUpper()) // Should print true
}
注意:s.IsUpper() 和 s.IsLower() 并不真正存在,但最好能找到等效项。
一种解决方案是使用 strings.ToUpper()/ToLower() 并与原始字符串进行比较。这也适用于标点符号的情况。
解决方法如下:
package main
import (
"fmt"
"strings"
)
func main() {
s := "UPPERCASE"
fmt.Println(strings.ToUpper(s) == s)
s = "lowercase"
fmt.Println(strings.ToUpper(s) == s)
s = "lowercase"
fmt.Println(strings.ToLower(s) == s)
s = "I'M YELLING AT YOU!"
fmt.Println(strings.ToUpper(s) == s)
}
你当然可以比较大写和小写的字符串,或者你可以在第一次失败时短路比较,这样在比较长字符串时会更有效率。
func IsUpper(s string) bool {
for _, r := range s {
if !unicode.IsUpper(r) && unicode.IsLetter(r) {
return false
}
}
return true
}
func IsLower(s string) bool {
for _, r := range s {
if !unicode.IsLower(r) && unicode.IsLetter(r) {
return false
}
}
return true
}
在 Golang 中检查字符串中的所有字符是大写还是小写的简单方法是什么?
另外,字符串中有标点符号怎么处理?
查看这些示例:
package main
import (
"fmt"
"unicode"
)
func main() {
s := "UPPERCASE"
fmt.Println(s.IsUpper()) // Should print true
s = "lowercase"
fmt.Println(s.IsUpper()) // Should print false
s = "lowercase"
fmt.Println(s.IsLower()) // Should print true
s = "I'M YELLING AT YOU!"
fmt.Println(s.IsUpper()) // Should print true
}
注意:s.IsUpper() 和 s.IsLower() 并不真正存在,但最好能找到等效项。
一种解决方案是使用 strings.ToUpper()/ToLower() 并与原始字符串进行比较。这也适用于标点符号的情况。
解决方法如下:
package main
import (
"fmt"
"strings"
)
func main() {
s := "UPPERCASE"
fmt.Println(strings.ToUpper(s) == s)
s = "lowercase"
fmt.Println(strings.ToUpper(s) == s)
s = "lowercase"
fmt.Println(strings.ToLower(s) == s)
s = "I'M YELLING AT YOU!"
fmt.Println(strings.ToUpper(s) == s)
}
你当然可以比较大写和小写的字符串,或者你可以在第一次失败时短路比较,这样在比较长字符串时会更有效率。
func IsUpper(s string) bool {
for _, r := range s {
if !unicode.IsUpper(r) && unicode.IsLetter(r) {
return false
}
}
return true
}
func IsLower(s string) bool {
for _, r := range s {
if !unicode.IsLower(r) && unicode.IsLetter(r) {
return false
}
}
return true
}