首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Cocoa中的CFStringTokenizer中获取令牌类型?

如何从Cocoa中的CFStringTokenizer中获取令牌类型?
EN

Stack Overflow用户
提问于 2009-05-08 23:12:18
回答 3查看 797关注 0票数 1

CFStringTokenizer文档在CFStringTokenizerAdvanceToNextToken()中有两个相互矛盾的语句:

CFStringTokenizerAdvanceToNextToken ..。 返回值 如果令牌程序成功地找到令牌并将其设置为当前令牌,则令牌的类型。如果令牌程序找不到令牌,则返回kCFStringTokenizerTokenNone。有关可能的值,请参见“令牌类型”。 ..。 如果找到令牌,则将其设置为当前令牌,函数返回true;否则,当前令牌无效,函数返回false。

第一段(返回一个令牌类型)是我想看到的:例如,它允许您检查令牌是否完全由非字母数字字符组成。然而,第二段(返回真假)似乎是实际发生的事情。

有什么想法吗?为什么会这样,或者如何解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2009-05-08 23:48:43

标题注释没有提到返回true或false,当标头和联机文档不一致时,标题通常是正确的。

在一个简单的测试中,我可以获得除0和1以外的返回值,所以您所看到的问题可能更具体;您能发布失败的示例代码吗?

票数 1
EN

Stack Overflow用户

发布于 2009-05-09 02:27:40

它们的意思可能是“非零”和“零”的广义意义上的“真”和“假”。如果它找到一个令牌,该函数将返回kCFStringTokenizerTokenNormal (即1)或掩码的某些组合(不管是哪种方式,非零/“真”)。如果没有,则函数返回kCFStringTokenizerTokenNone (为零/“false”)。

当然,这是一种模糊的语言,所以请在苹果Bug记者上提交一个文档错误。

票数 0
EN

Stack Overflow用户

发布于 2013-02-27 07:34:43

如果您要寻找的是忽略CFNumber类型令牌的能力,那么您可以使用:

代码语言:javascript
复制
while (tokenType != kCFStringTokenizerTokenNone) {
    if ( (tokenType & kCFStringTokenizerTokenHasHasNumbersMask) == 0) { // ignore numbers
        range = CFStringTokenizerGetCurrentTokenRange(tokenizer);
        NSString *token = [string substringWithRange:NSMakeRange(range.location, range.length)];
        [tokensArray addObject:token];
    }
    tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/842211

复制
相关文章

相似问题

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