【发布时间】:2017-12-25 20:42:16
【问题描述】:
给定一个 utf8 字符串,如何知道它包含不允许的指定字符?
需求是utf8字符串只能包含英文字符和中文字符。不允许使用任何其他字符,如符号、数字、空格、'\n' ...。
剂量 std::regex 可以完成这项工作吗?
bool legal(const std::string& s) { // s is utf8 string
//??
}
【问题讨论】:
-
您能给我举一个可以包含在UTF-8编码字符串中的汉字的例子吗?
-
任何汉字,任何英文字符都可以
-
您可能会发现将所有中文字符放入 UTF-8 编码字符串是一项挑战。
-
其他一些语言可以做到这一点,比如 python。但我不知道 std::regex 能不能做到这一点。如果不能,似乎唯一的方法是检查汉字的编码范围
-
您应该遍历字符串,即时将 UTF-8 序列解码为 Unicode 代码点编号;然后将它们与您允许的范围进行比较。