我正在尝试解析一个大字符串,以便隔离单词和所有标点符号。 Java为其StringTokenizer类提供了以下构造函数。
public StringTokenizer(String str, String delim, boolean returnDelims)
注意最后一个参数。如果是这样,则每个分隔符也作为标记返回。
Obj-C中是否有一个模仿这个Java功能的类?我已经能够解析字符串了,但是在这个过程中我丢失了分隔符,那些分隔符决定了我接下来会做什么。
根据CFStringTokenizer引用,它将标记为“单词,句子和段落”。我需要更多的粒度。
感谢帮助。
答案 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
这不是一个完整的实现,它不会处理空格或强制执行数组中的特定顺序。但它应该给你一个想法。