jer*_*ean 10 string lowercase go uppercase
在 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
}
Run Code Online (Sandbox Code Playgroud)
注意: s.IsUpper() 和 s.IsLower() 并不真正存在,但最好能找到等价物。
Jim*_*imB 21
您当然可以比较整个大写和小写字符串,或者您可以在第一次失败时短路比较,这在比较长字符串时会更有效。
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
}
Run Code Online (Sandbox Code Playgroud)
一种解决方案是使用 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)
}
Run Code Online (Sandbox Code Playgroud)