作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我写了一个扩展 isalnum
的函数来识别 UTF-8 编码的变音符号。
是否有更优雅的方法来解决这个问题?
代码如下:
bool isalnumlaut(const char character) {
int cr = (int) (unsigned char) character;
if (isalnum(character)
|| cr == 195 // UTF-8
|| cr == 132 // Ä
|| cr == 164 // ä
|| cr == 150 // Ö
|| cr == 182 // ö
|| cr == 156 // Ü
|| cr == 188 // ü
|| cr == 159 // ß
) {
return true;
} else {
return false;
}
}
编辑:
我现在多次测试我的解决方案,但它似乎可以满足我的目的。有强烈的反对意见吗?
最佳答案
您的代码与您声称的不符。
Ä
的 utf-8 表示是两个字节 - 0xC3,0x84
。值高于 0x7F
的单独字节在 utf-8 中没有意义。
一些一般性建议:
关于c++ - 扩展 'isalnum' 以识别 UTF-8 元音变音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726777/
我是一名优秀的程序员,十分优秀!