- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要将短语拆分为单词、数字、标点符号和空格/制表符。我也想保持事物的秩序。
NSString *text = [NSString stringWithFormat:@"The 3 quick:\"brown fox, jump's\" over."];
这是我需要产生的那种列表:
['The', ' ', '3', ' ', 'quick, ':', '"', 'brown', ' ', 'fox', ',', ' ', 'jump's', ' ', '.']
谢谢!!
最佳答案
试用我使用 NSScanner
和 NSCharacterSet
编写的这个类别:
@interface NSString(Splitting)
-(NSArray *) arrayBySeparatingComponentsInCharacterSet:(NSCharacterSet *) charSet;
@end
@implementation NSString(Splitting)
BOOL scanOneCharacterFromSetIntoString(NSScanner *self, NSCharacterSet * charSet, NSString **outStr);
BOOL scanOneCharacterFromSetIntoString(NSScanner *self, NSCharacterSet * charSet, NSString **outStr)
{
// check for index out of bounds
NSString *inStr = self.string;
if (self.scanLocation >= inStr.length)
{
return NO;
}
unichar ch = [inStr characterAtIndex:self.scanLocation];
if (![charSet characterIsMember:ch])
{
return NO;
}
self.scanLocation++;
if (outStr)
{
*outStr = [NSString stringWithCharacters:&ch length:1];
}
return YES;
}
-(NSArray *) arrayBySeparatingComponentsInCharacterSet:(NSCharacterSet *)charSet
{
NSScanner *scanner = [NSScanner scannerWithString:self];
NSMutableArray *result = [NSMutableArray array];
NSString *temp = nil;
while ([scanner scanUpToCharactersFromSet:charSet intoString:&temp] || scanOneCharacterFromSetIntoString(scanner, charSet, &temp)) {;
[result addObject:temp];
if ([scanner scanLocation] >= [self length])
{
break;
}
unichar temp2 = [self characterAtIndex:[scanner scanLocation]];
if ([charSet characterIsMember:temp2])
{
[result addObject:[NSString stringWithFormat:@"%c", temp2]];
// only update the scan location if the scan was sucessful
[scanner setScanLocation:[scanner scanLocation] + 1];
}
}
return result;
}
@end
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSString *str = @"The 3 quick:\"brown fox, jump's\" over.";
NSArray *array = [str arrayBySeparatingComponentsInCharacterSet:[NSCharacterSet characterSetWithCharactersInString:@" :\",'."]];
NSLog(@"%@", array);
}
}
应该是你需要的,把Character Set改成你需要的就可以了。另请注意,这是在启用 ARC 的情况下编译的,因此它可能会或可能不会在引用计数环境中与内存管理一起正常工作。
关于objective-c - 将文本拆分为单词、数字和标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870032/
我想将字符串拆分为列表中的单独句子。 例子: string = "Hey! How are you today? I am fine." 输出应该是: ["Hey!", "How are you to
好吧,这是我第一次发帖,所以如果我有任何错误,请多多包涵。长话短说,我得到了一个字符串数组,我的目标是计算字符串的唯一单词数并从数组中删除所有标点符号。 public static HashMap u
我正在尝试为自然语言解析器返回的词性标签和其他标签创建可区分的联合。 在 C#/Java 中通常使用字符串或枚举来表示它们,但在 F# 中似乎更适合区分联合,因为它们是不同的只读值。 在语言引用中,我
我正在处理 go/golang,尝试编写需要字符串和种子的代码。它应该返回一个打乱的字符串,其中单词中的第一个和最后一个字母、标点符号和数字保持不变。 示例: my name is Nikki. My
这个问题在这里已经有了答案: How can I use "." as the delimiter with String.split() in java [duplicate] (8 个答案) 关
我需要一种方法来使用包含省份缩写、全名和地区的词典,而不必为安大略省的每个可能的拼写错误添加条目。表如下: state |name | territory ============
我需要能够仅使用 C++ 字符串才能更改下面的输入段落。我遇到的问题是,当我在末尾拉出带有标点符号的东西时,例如“programs-”,它会将它作为“programs-”拉入我的数组,而不是分别将“p
我编写了一个函数来删除停用词和标记化,如下所示: def process(text, tokenizer=TweetTokenizer(), stopwords=[]): text =
df <- structure(list(`a a` = 1:3, `a b` = 2:4), .Names = c("a a", "a b" ), row.names = c(NA, -3L), c
我正在尝试使用javascript制作一个回文程序,即使字符串有标点符号和空格,它也会通过TRUE或FALSE显示字符串是否是回文(前女士,我是亚当)。但每次我输入一个字符串时,无论字符串是什么,我都
删除选择性连字符 import pandas as pd s = pd.Series(['do not-remove this-hyphen but remove-all of these-hyphe
在 Web 表单条目中,我们看到使用了奇怪的字符,例如: '(windows 1252 编码) 或 ðŸ'•(表情符号) 或 |(不知道,但认为它是 windows 1252) 对于其中一些,我可以使
从字符串中过滤掉所有 UTF-8 标点字符和符号(如✀✁✂✃✄✅✆✇✈等)的最佳和最有效方法是什么。简单地过滤掉所有不在 a-z、A-Z 和 0-9 中的字符不是一种选择,因为我想保留来自其他语言的字
Ruby 中是否有识别 Unicode 标点符号(例如,",-)的正则表达式? 最佳答案 你可以使用这个: /[[:punct:]]/ 有关更多信息,请查看 Regexp class .您也可以在此
我正在尝试创建一个 LPeg 模式,该模式将匹配 UTF-8 编码输入中的任何 Unicode 标点符号。我想出了以下 Selene Unicode 和 LPeg 的结合: local unicode
我正在编写一个Python代码来从输入文件中提取所有URL,其中包含来自Twitter(推文)的内容或文本。然而,在这样做时,我意识到在 python 列表中提取的几个 URL 在末尾有“特殊字符”或
我写emacs lisp代码如下: #!/usr/bin/emacs --script (setq input (read-minibuffer "please input your name:")
这是我的代码。用户将提供输入(任何字符串)而不是“这是一个测试。1 2 3 4 5”。 然后它将显示空格数、标点符号、数字和字母作为输出字符串。 #include #include using n
我正在尝试比较没有任何标点符号、空格、重音符号等的名称。目前我正在做以下事情: -(NSString*) prepareString:(NSString*)a { //remove any a
我正在使用 Ruby on Rails 3.1.0,我想知道如何在 YAML 文件中正确声明冒号(标点符号)。我试图通过在我的 config/locales/defaults/en.yml 文件 中添
我是一名优秀的程序员,十分优秀!