有没有人知道怎样才能把像NSString这样的单词变成"Algebra",不带重音,只用第一个字母大写?
谢谢,
RL
发布于 2011-02-19 19:32:06
NSString有一个名为capitalizedString的方法
返回值
接收器中每个单词的第一个字符都更改为其相应的大写值的字符串,其余所有字符均设置为其相应的小写值。
NSString *str = @"AlgeBra";
NSString *other = [str capitalizedString];
NSLog (@"Old: %@, New: %@", str, other);编辑:
我刚看到你也想要去掉重音。您可以执行一系列步骤:
// original string
NSString *str = @"ÁlgeBra";
// convert to a data object, using a lossy conversion to ASCII
NSData *asciiEncoded = [str dataUsingEncoding:NSASCIIStringEncoding
allowLossyConversion:YES];
// take the data object and recreate a string using the lossy conversion
NSString *other = [[NSString alloc] initWithData:asciiEncoded
encoding:NSASCIIStringEncoding];
// relinquish ownership
[other autorelease];
// create final capitalized string
NSString *final = [other capitalizedString];dataUsingEncoding:allowLossyConversion:的文档明确指出,当转换为ASCII码时,字母‘α’将转换为‘A’。
发布于 2011-02-19 20:35:43
dreamlax has already mentioned the capitalizedString method。但是,我认为使用stringByFoldingWithOptions:locale:方法会更优雅,而不是通过在NSData之间进行有损转换来删除重音字符。
NSString *accentedString = @"ÁlgeBra";
NSString *unaccentedString = [accentedString stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:[NSLocale currentLocale]];
NSString *capitalizedString = [unaccentedString capitalizedString];根据要转换的字符串的性质,您可能希望设置固定的区域设置(例如英语),而不是使用用户的当前区域设置。这样,您就可以确保在每台机器上获得相同的结果。
发布于 2011-02-19 18:55:23
这里有一个如何做的逐步示例。有改进的空间,但你得到了基本的想法......
NSString *input = @"ÁlgeBra";
NSString *correctCase = [NSString stringWithFormat:@"%@%@",
[[input substringToIndex:1] uppercaseString],
[[input substringFromIndex:1] lowercaseString]];
NSString *result = [[[NSString alloc] initWithData:[correctCase dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding] autorelease];
NSLog( @"%@", result );https://stackoverflow.com/questions/5050270
复制相似问题