Obj C相当于Java StringTokenizer返回分隔符

时间:2013-05-26 22:23:27

标签: objective-c string stringtokenizer

我正在尝试解析一个大字符串,以便隔离单词和所有标点符号。 Java为其StringTokenizer类提供了以下构造函数。

public StringTokenizer(String str, String delim, boolean returnDelims)

注意最后一个参数。如果是这样,则每个分隔符也作为标记返回。

Obj-C中是否有一个模仿这个Java功能的类?我已经能够解析字符串了,但是在这个过程中我丢失了分隔符,那些分隔符决定了我接下来会做什么。

根据CFStringTokenizer引用,它将标记为“单词,句子和段落”。我需要更多的粒度。

感谢帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用componentsSeparatedByString:的{​​{1}}方法,然后使用NSString在子字符串之间插入分隔符:

NSMutableArray

答案 1 :(得分:0)

以下是NSScanner上可以帮助您入门的示例类别:

@implementation NSScanner (Tokenizer)

+ (NSArray *)tokenize(NSString *str,NSString *delim,BOOL returnDelims)
{
    NSScanner       *scanner=[NSScanner scannerWithString:str];
    NSString        *delimiters=[NSCharacterSet characterSetWithCharactersInString:@",.!;"];
    NSMutableArray  *ma=[NSMutableArray array];
    NSString        *s;

    while(![scanner isAtEnd])
    {
        if([scanner scanUpToCharactersFromSet:delim intoString:&s])
        {
            [ma addObject:s];
        }
        if([scanner scanCharactersFromSet:delim intoString:&s])
        {
            if(returnDelims) [ma addObject:s];
        }
    }

    return ma;
}

@end

这不是一个完整的实现,它不会处理空格或强制执行数组中的特定顺序。但它应该给你一个想法。