似乎 unicode 包中的 IsDigit 和 IsNumber 的行为没有不同,至少在我的以下测试代码中:
package main
import "fmt"
import "unicode"
func main() {
r := rune('1')
fmt.Println(unicode.IsDigit(r))
fmt.Println(unicode.IsNumber(r))
//true
//true
}
他们都打印true。
我试图从他们的源代码中理解。但是,即使从它们的源代码来看,我仍然不明白它们之间的区别是什么。
// IsNumber reports whether the rune is a number (category N).
func IsNumber(r rune) bool {
if uint32(r) <= MaxLatin1 {
return properties[uint8(r)]&pN != 0
}
return isExcludingLatin(Number, r)
}
// IsDigit reports whether the rune is a decimal digit.
func IsDigit(r rune) bool {
if r <= MaxLatin1 {
return '0' <= r && r <= '9'
}
return isExcludingLatin(Digit, r)
}
翻阅古今
月关宝盒
相关分类