我允许用户将一些数据输入到TextField中。用户将Š1234D
输入到TextField中。
我的代码如下所示:
NSString *string = textField.text;
for (int nCtr = 0; nCtr < [string length]; nCtr++) {
const char chars = [string characterAtIndex:nCtr];
int isAlpha = isalpha(chars);
}
字符串输出如下所示:
Š1234D
然后我打印了第一个字符值,它看起来像这样:“`”而不是“Š”。为什么会这样呢?我也想在代码中允许使用特殊字符。任何建议也将受到欢迎。需要一些指导。谢谢
最佳答案
您正在截断字符值,因为[NSString chatacterAtIndex:]
返回unichar
(16位)而不是char
(8位)。尝试:
unichar chars = [string characterAtIndex:nCtr];
更新:还请注意,您不应该使用
isalpha()
来测试字母,因为它仅限于拉丁字符集,并且需要能够处理非拉丁字符的字符。请改用以下代码:NSCharacterSet *letterSet = [NSCharacterSet letterCharacterSet];
NSString *string = textField.text;
for (NSUIntger nCtr = 0; nCtr < [string length]; nCtr++)
{
const unichar c = [string characterAtIndex:nCtr];
BOOL isAlpha = [letterSet characterIsMember:c];
...
}
关于ios - 在iOS中允许特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15110593/