首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标C中的strchr?

目标C中的strchr?
EN

Stack Overflow用户
提问于 2010-04-02 02:47:06
回答 4查看 1.2K关注 0票数 0

我正在尝试编写等同于strchr的代码,但是使用NSStrings...我现在得到了这个:

代码语言:javascript
复制
Boolean nsstrchr(NSString* s, char c)
{
    NSString *tmps = [NSString stringWithFormat: @"%c", c];
    NSCharacterSet *cSet = [NSCharacterSet characterSetWithCharactersInString: tmps];
    NSRange rg = [s rangeOfCharacterFromSet: cSet];
    return rg.location != NSNotFound;
}

这看起来不必要的复杂...有没有办法做到这一点(最好是不涉及将NSString转换为使运行时间加倍的cstring,或者我自己使用characterAtIndex:...我是否在NSString描述中遗漏了一些明显的方法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-02 02:57:32

KennyTM已经在评论中指出,您可以使用-[NSString rangeOfString:]而不是-[NSString rangeOfCharacterFromSet]。我不是想窃取他有用的答案,但我想指出的是,你可以在NSString上将其归入一个类别,以使其更易于使用:

代码语言:javascript
复制
@interface NSString (AdditionalStringOps)
- (BOOL) containsCharacter:(char) c;
@end

@implementation NSString (AdditionalStringOps)

- (BOOL) containsCharacter:(char) c
{
    NSString *tmp = [NSString stringWithFormat:@"%c", c];
    return [self rangeOfString:tmp].location != NSNotFound;
}

@end

然后你可以像这样使用它:

代码语言:javascript
复制
if ([myString containsCharacter:'A']) {
    // Do stuff...
}
票数 2
EN

Stack Overflow用户

发布于 2010-04-02 02:54:04

正如@KennyTM提到的,使用rangeOfString:。如果你真的要处理char级别的东西,你可以通过-UTF8String (或-cStringUsingEncoding:)取出char*,然后像在任何其他char*上一样(可能通过使用strchr)在那里搜索你的角色。

票数 0
EN

Stack Overflow用户

发布于 2010-04-02 02:55:09

代码语言:javascript
复制
Boolean nsstrchr(NSString* s, char c)
{
    NSString *tmps = [NSString stringWithFormat: @"%c", c];
    NSRange rg = [s rangeOfString: tmps];
    return rg.location != NSNotFound;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2562798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档