Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测iOS/objective-C中的下划线和插入符号_Ios_String_Special Characters_Unichar - Fatal编程技术网

检测iOS/objective-C中的下划线和插入符号

检测iOS/objective-C中的下划线和插入符号,ios,string,special-characters,unichar,Ios,String,Special Characters,Unichar,我需要检测unichar是否等于下划线(ux)或插入符号(^)。我现在是这样做的: unichar ch; NSString *chAsString = [NSString stringWithFormat:@"%C", ch]; if ([chAsString isEqualToString:@"_"]) // ... do something ... else if ([chAsString isEqualToString:@"^"]) // ... do something

我需要检测unichar是否等于下划线(ux)或插入符号(^)。我现在是这样做的:

unichar ch;
NSString *chAsString = [NSString stringWithFormat:@"%C", ch];
if ([chAsString isEqualToString:@"_"])
    // ... do something ...
else if ([chAsString isEqualToString:@"^"])
    // ... do something else...
问题#1:此方法是否安全,即我是否会捕获这些字符的所有可能编码


问题2:这是最干净的方式吗?它看起来非常笨重。但我感觉它比(ch==0x5F)等更可靠。

您不必比较字符串。您可以比较每个字符。试试这个:

if (ch == '_')
    // ... do something ...
else if (ch == '^')
    // ... do something else...
希望这有帮助:)

NSString *str = @"string";
const char *myChar = "some string";
if (strcmp(myChar,  str.UTF8String))


对于值低于0x7f的字符,最好的方法是比较字符值--
if(ch=='''.')…
。使用扩展的Unicode字符会变得有点棘手。对于给定的Unicode字符,只有一种“可能的编码”。谢谢。这很有效。出于某种原因,我认为
if(ch==''.')
没有。你可以回答这个问题,我来投票。对于0x7f以上的字符来说,这有点棘手。对于那些您应该使用十六进制Unicode数值,而不是单引号字符,因为单引号字符是标准的C
char
(8位),而不是
Unichar
@HotLicks,好的,谢谢您的澄清。就像我说的,请作为答案发布,我会投票。
[str isEqualToString:[NSString stringWithUTF8String:myChar]];