有必要找出字符串中的语言。如果它包含西里尔字符,那么它是用俄语写的。如果没有西里尔字符,则为英文。为此,我使用正则表达式:
import (
"regexp"
)
func main() {
str := "Некая строка c кириллическими символами"
re := regexp.MustCompile("[А-Яа-я]+?") //проверяем на киррилические символы
isRussian := re.MatchString(str)
if isRussian {
...
}
}
有没有更有效的方法来找出字符串的语言?只有两种语言——俄语和英语。
如果假设不会有混合行,那么您可以这样做:
这将比 RegExp 更快:
试验结果:
UPD:用更正确的替换了对俄语字母表中字符出现的检查。
最快(也是最简单)的方法:
一旦确定只处理两种语言,确定字符串中的所有字符是否都是 ASCII 字符就足够了。如果是,那么该行是用英语写的,如果不是,那么用其他语言(在你的情况下,它是俄语)。
字符串为俄语时的基准测试结果:
对于字符串为英文的情况:
为了比较,测试参与了上面答案中的函数和使用迭代的函数
range
: