检测iOS/objective-C中的下划线和插入符号
我需要检测unichar是否等于下划线(ux)或插入符号(^)。我现在是这样做的:检测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 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数值,而不是单引号字符,因为单引号字符是标准的Cchar
(8位),而不是Unichar
@HotLicks,好的,谢谢您的澄清。就像我说的,请作为答案发布,我会投票。
[str isEqualToString:[NSString stringWithUTF8String:myChar]];