在 Objective-C 中大写或更改 NSString 的大小写

Posted

技术标签:

【中文标题】在 Objective-C 中大写或更改 NSString 的大小写【英文标题】:Capitalize or change case of an NSString in Objective-C 【发布时间】:2011-08-01 00:01:03 【问题描述】:

我想知道如何将在NSMutableArray 中的对象中找到的字符串大写。

NSArray 在索引 2 处包含字符串 'April'。 我希望将其更改为'APRIL'

有这样简单的东西吗?

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] capitalized];

【问题讨论】:

【参考方案1】:

以防万一有人在 swift 中需要上述内容:

SWIFT 3.0 及以上版本:

这将使您的字符串大写,将第一个字母大写:

viewNoteDateMonth.text  = yourString.capitalized

这将使您的字符串大写,使所有字符串大写:

viewNoteDateMonth.text  = yourString.uppercased()

【讨论】:

【参考方案2】:

来吧:

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] uppercaseString];

顺便说一句:"april"lowercase ➔ [NSString lowercaseString]"APRIL"UPPERCASE ➔ [NSString uppercaseString]"April May"Capitalized/Word Caps ➔ @98765432 "April may"Sentence caps(缺少方法;请参阅下面的解决方法)

因此您想要的称为“大写”,而不是“大写”。 ;)

至于“句​​子大写”,必须记住,“句子”通常意味着“整个字符串”。如果您希望获得真正的句子,请使用下面的第二种方法,否则请使用第一种:

@interface NSString ()

- (NSString *)sentenceCapitalizedString; // sentence == entire string
- (NSString *)realSentenceCapitalizedString; // sentence == real sentences

@end

@implementation NSString

- (NSString *)sentenceCapitalizedString 
    if (![self length]) 
        return [NSString string];
    
    NSString *uppercase = [[self substringToIndex:1] uppercaseString];
    NSString *lowercase = [[self substringFromIndex:1] lowercaseString];
    return [uppercase stringByAppendingString:lowercase];


- (NSString *)realSentenceCapitalizedString 
    __block NSMutableString *mutableSelf = [NSMutableString stringWithString:self];
    [self enumerateSubstringsInRange:NSMakeRange(0, [self length])
                             options:NSStringEnumerationBySentences
                          usingBlock:^(NSString *sentence, NSRange sentenceRange, NSRange enclosingRange, BOOL *stop) 
        [mutableSelf replaceCharactersInRange:sentenceRange withString:[sentence sentenceCapitalizedString]];
    ];
    return [NSString stringWithString:mutableSelf]; // or just return mutableSelf.


@end

【讨论】:

【参考方案3】:
viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] uppercaseString];

文档:http://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/uppercaseString

您也可以使用lowercaseString 和capitalizedString

【讨论】:

以上是关于在 Objective-C 中大写或更改 NSString 的大小写的主要内容,如果未能解决你的问题,请参考以下文章

从 Objective-C 桥接到 swift 时,swift 编译器如何识别变量是复制的还是强的?

在 Haskell 中写或不写 `module Main where`

在 Objective-C 中更改 Javascript 变量

如何使用存储过程在本地读/写或复制/粘贴文本文件?

IOS / Objective-C:核心数据NSPredicate使用IN不返回所有匹配

如何在 Objective-C/Cocoa 中更改状态栏项目标题的颜色?