Objective c 比较物品的NSString核算(即“the”和“a”)
我原以为caseinsensitiveLocalizedCompare:会考虑这个问题(在比较中不包括“the”和“a”),但事实并非如此 (另外,对于下面的第一个答案,我理解“不区分大小写”部分没有帮助,但我认为“本地化”部分可能会有所帮助 我找不到任何选项可以这样做,谷歌是无法使用的,因为我正在搜索“的”和“a” 我想,既然这很普遍,可可中就会有某种东西存在Objective c 比较物品的NSString核算(即“the”和“a”),objective-c,cocoa,cocoa-touch,comparison,nsstring,Objective C,Cocoa,Cocoa Touch,Comparison,Nsstring,我原以为caseinsensitiveLocalizedCompare:会考虑这个问题(在比较中不包括“the”和“a”),但事实并非如此 (另外,对于下面的第一个答案,我理解“不区分大小写”部分没有帮助,但我认为“本地化”部分可能会有所帮助 我找不到任何选项可以这样做,谷歌是无法使用的,因为我正在搜索“的”和“a” 我想,既然这很普遍,可可中就会有某种东西存在 我正在实现我自己的方法,但我认为有一种内置的方法可以做到这一点。当您想知道Cocoa是否支持某些东西时,通常可以查看本例中的文档 在实
我正在实现我自己的方法,但我认为有一种内置的方法可以做到这一点。当您想知道Cocoa是否支持某些东西时,通常可以查看本例中的文档
在实现此功能时,请不要忘记将文章列表放入应用程序包中的本地化资源文件中,以便本地化程序能够以自己的语言提供可剥离文章的列表。按需加载该文件,并在整个过程中保留该文件。或者,对于某些内容(例如,乐队名称),最好有一个包含所有已知文章的单一文件。当您想知道Cocoa是否支持某些内容时,通常可以查看本例中的文档
在实现此功能时,请不要忘记将文章列表放入应用程序包中的本地化资源文件中,以便本地化程序能够以自己的语言提供可剥离文章的列表。按需加载该文件,并在整个过程中保留该文件。或者,对于某些内容(例如,乐队名称),最好有一个包含所有已知文章的单一文件。为了完整起见,下面是我用于解决“对对象排序”问题的代码。请将其添加到NSString上的类别中
- (NSComparisonResult)localizedCaseInsensitiveExcludeTheCompare:(NSString*)aString{
NSString* firstString = [self stringByRemovingArticlePrefixes];
aString = [aString stringByRemovingThePrefixes];
return [firstString localizedCaseInsensitiveCompare:aString];
}
- (NSString*)stringByRemovingThePrefixes{
if([self length] < 5)
return self;
NSString* aString = [self copy];
if([[aString substringToIndex:4] doesContainString:@"The "]){
aString = [aString substringFromIndex:4];
aString = [aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}else if([[aString substringToIndex:4] doesContainString:@"the "]){
aString = [aString substringFromIndex:4];
aString = [aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
return [aString autorelease];
}
-(NSComparisonResult)本地化CaseInsensitiveExcludeTheCompare:(NSString*)aString{
NSString*firstString=[self-stringByRemovingArticlePrefixes];
aString=[aString string by removing the prefixes];
返回[firstString localizedCaseInsensitiveCompare:aString];
}
-(NSString*)通过删除前缀来设置字符串{
如果([自身长度]<5)
回归自我;
NSString*aString=[自复制];
如果([[aString Substring to Index:4]不包含@“The”]){
aString=[aString substringFromIndex:4];
aString=[aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}如果([[aString Substring to Index:4]不包含@“the”]){
aString=[aString substringFromIndex:4];
aString=[aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
返回[自动释放];
}
为了完整起见,下面是我用于解决“对对象排序”问题的代码。请将其添加到NSString上的类别中
- (NSComparisonResult)localizedCaseInsensitiveExcludeTheCompare:(NSString*)aString{
NSString* firstString = [self stringByRemovingArticlePrefixes];
aString = [aString stringByRemovingThePrefixes];
return [firstString localizedCaseInsensitiveCompare:aString];
}
- (NSString*)stringByRemovingThePrefixes{
if([self length] < 5)
return self;
NSString* aString = [self copy];
if([[aString substringToIndex:4] doesContainString:@"The "]){
aString = [aString substringFromIndex:4];
aString = [aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}else if([[aString substringToIndex:4] doesContainString:@"the "]){
aString = [aString substringFromIndex:4];
aString = [aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
return [aString autorelease];
}
-(NSComparisonResult)本地化CaseInsensitiveExcludeTheCompare:(NSString*)aString{
NSString*firstString=[self-stringByRemovingArticlePrefixes];
aString=[aString string by removing the prefixes];
返回[firstString localizedCaseInsensitiveCompare:aString];
}
-(NSString*)通过删除前缀来设置字符串{
如果([自身长度]<5)
回归自我;
NSString*aString=[自复制];
如果([[aString Substring to Index:4]不包含@“The”]){
aString=[aString substringFromIndex:4];
aString=[aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}如果([[aString Substring to Index:4]不包含@“the”]){
aString=[aString substringFromIndex:4];
aString=[aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
返回[自动释放];
}
我确实读过,但不知道我是否遗漏了一些看起来很基本的东西。感谢这些提示,我已经开始实现这一点了。没有公共功能可以实现这一点。但是,苹果确实实现了这一功能。最明显的用法是在iTunes中。在iTunes软件包中翻找,你会发现本地化文件SortPrefixes.plist
。这可以让你开始(道德上有点可疑)本地化版本。:)我确实读过,但不知道我是否遗漏了一些看起来很基本的东西。谢谢你的提示,我已经在实现这个功能的路上了。没有公共功能可以做到这一点。不过,苹果确实实现了这个功能。最明显的用法是在iTunes中。仔细查看iTunes软件包,你会发现本地化文件sortprefix.plist
。这可以让你开始(道德上有点可疑)本地化版本。:)