Sim*_*ave 2 cocoa objective-c nsstring
如何将NSStringascii alpha字符(/a-z/)缩小为小写?非英语字母字符应转换为ascii字符.具体来说,大写字符变为小写(A→a),非英语字符变为英文字符(ñ→n),所有其他字符都被丢弃.
例如:"Västerås,Sweden"成为"vasterassweden".
您可以将字符串转换为NSData包含不同编码的字符串的字节,并允许使用有损转换dataUsingEncoding:allowLossyConversion.然后你可以将NSData背面转换为NSString:
NSString *unicode = @"Västerås, Sweden";
NSString *ascii = [[NSString alloc]
initWithData:[unicode dataUsingEncoding:NSASCIIStringEncoding
allowLossyConversion:YES
]
encoding:NSASCIIStringEncoding
];
Run Code Online (Sandbox Code Playgroud)
结果是"瑞典韦斯特罗斯".现在有一个lowercaseString方法等,如果你需要更进一步.
编辑:
哎呀,错过了问题的结尾"和所有其他角色都被丢弃了",你确实希望更进一步:
NSString *lower = [ascii lowercaseString];
NSString *letters = [[lower
componentsSeparatedByCharactersInSet:[[NSCharacterSet letterCharacterSet]
invertedSet]
]
componentsJoinedByString:@""
];
Run Code Online (Sandbox Code Playgroud)
这看起来很糟糕(并且转换为C字符串并且更直接地执行它是一个很好的参数),但它完成了工作:componentsSeparatedByCharactersInSet:通过将提供的集合中的字符视为分隔符来返回字符串数组; componentsJoinedByString:将一个字符串数组连接成一个由提供的字符串分隔的单个字符串 - 我们已经传递了一个空连接符.