4 回答

TA貢獻1808條經驗 獲得超4個贊
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() 并不真正存在,但如果能找到等價的就很好了。

TA貢獻2003條經驗 獲得超2個贊
一種解決方案是使用 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)
}

TA貢獻1784條經驗 獲得超9個贊
不需要unicode(僅適用于英文字母):
func IsUpper(s string) bool {
for _, charNumber := range s {
if charNumber > 90 || charNumber < 65 {
return false
}
}
return true
}
func IsLower(s string) bool {
for _, charNumber := range s {
if charNumber > 122 || charNumber < 97 {
return false
}
}
return true
}

TA貢獻1836條經驗 獲得超4個贊
A?unicode.{IsUpper, Lower}和 B?strings.{ToUpper, Lower}都很好
對于單個字節組成的數據,A會比B更好
如果數據字節不確定,則 B 優于 A:例如
中文a1
package main
import (
? ? "strings"
? ? "testing"
? ? "unicode"
)
func IsUpperU(s string) bool {
? ? for _, r := range s {
? ? ? ? if !unicode.IsUpper(r) && unicode.IsLetter(r) {
? ? ? ? ? ? return false
? ? ? ? }
? ? }
? ? return true
}
func IsUpper(s string) bool {
? ? return strings.ToUpper(s) == s
}
func IsLowerU(s string) bool {
? ? for _, r := range s {
? ? ? ? if !unicode.IsLower(r) && unicode.IsLetter(r) {
? ? ? ? ? ? return false
? ? ? ? }
? ? }
? ? return true
}
func IsLower(s string) bool {
? ? return strings.ToLower(s) == s
}
func TestIsUpper(t *testing.T) {
? ? for _, d := range []struct {
? ? ? ? actual? ?bool
? ? ? ? expected bool
? ? }{
? ? ? ? {IsUpperU("中文A1"), false}, // be careful!
? ? ? ? {IsUpper("中文A1"), true},
? ? ? ? {IsUpper("中文a1"), false},
? ? ? ? {IsUpperU("中文a1"), false},
? ? } {
? ? ? ? if d.actual != d.expected {
? ? ? ? ? ? t.Fatal()
? ? ? ? }
? ? }
}
func TestIsLower(t *testing.T) {
? ? for idx, d := range []struct {
? ? ? ? actual? ?bool
? ? ? ? expected bool
? ? }{
? ? ? ? {IsLowerU("中文a1"), false}, // be careful!
? ? ? ? {IsLower("中文a1"), true},
? ? ? ? {IsLower("中文A1"), false},
? ? ? ? {IsLowerU("中文A1"), false},
? ? } {
? ? ? ? if d.actual != d.expected {
? ? ? ? ? ? t.Fatal(idx)
? ? ? ? }
? ? }
}
- 4 回答
- 0 關注
- 379 瀏覽
添加回答
舉報