首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSString --如何从“代数”到“代数”

NSString --如何从“代数”到“代数”
EN

Stack Overflow用户
提问于 2011-02-19 18:37:45
回答 3查看 5.2K关注 0票数 23

有没有人知道怎样才能把像NSString这样的单词变成"Algebra",不带重音,只用第一个字母大写?

谢谢,

RL

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-19 19:32:06

NSString有一个名为capitalizedString的方法

返回值

接收器中每个单词的第一个字符都更改为其相应的大写值的字符串,其余所有字符均设置为其相应的小写值。

代码语言:javascript
复制
NSString *str = @"AlgeBra";
NSString *other = [str capitalizedString];

NSLog (@"Old: %@, New: %@", str, other);

编辑:

我刚看到你也想要去掉重音。您可以执行一系列步骤:

代码语言:javascript
复制
// 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’。

票数 13
EN

Stack Overflow用户

发布于 2011-02-19 20:35:43

dreamlax has already mentioned the capitalizedString method。但是,我认为使用stringByFoldingWithOptions:locale:方法会更优雅,而不是通过在NSData之间进行有损转换来删除重音字符。

代码语言:javascript
复制
NSString *accentedString = @"ÁlgeBra";
NSString *unaccentedString = [accentedString stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:[NSLocale currentLocale]];
NSString *capitalizedString = [unaccentedString capitalizedString];

根据要转换的字符串的性质,您可能希望设置固定的区域设置(例如英语),而不是使用用户的当前区域设置。这样,您就可以确保在每台机器上获得相同的结果。

票数 56
EN

Stack Overflow用户

发布于 2011-02-19 18:55:23

这里有一个如何做的逐步示例。有改进的空间,但你得到了基本的想法......

代码语言:javascript
复制
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 );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5050270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档