代码之家  ›  专栏  ›  技术社区  ›  Rog

将NSString的单个字符设置为大写的简单方法

  •  10
  • Rog  · 技术社区  · 17 年前

    - (NSString *)capitalizedString 将每个单词的第一个字母转换为大写。有没有一种简单的方法可以将单个字符转换成大写?

    我目前正在使用:

    NSRange firstCharRange = NSMakeRange(0,1);
    NSString* firstCharacter = [dateString substringWithRange:firstCharRange];
    NSString* uppercaseFirstChar = [firstCharacter originalString];
    NSMutableString* capitalisedSentence = [originalString mutableCopy];
    [capitalisedSentence replaceCharactersInRange:firstCharRange withString:uppercaseFirstChar];
    

    5 回复  |  直到 17 年前
        1
  •  17
  •   doomspork    17 年前

     NSString *capitalisedSentence = 
        [dateString stringByReplacingCharactersInRange:NSMakeRange(0,1)  
        withString:[[dateString  substringToIndex:1] capitalizedString]];
    
        2
  •  3
  •   Rog    14 年前

    自从 NSString 是不变的,你拥有的似乎是做你想做的事情的好方法。的实现 (NSString*)uppercaseString 类似的方法可能看起来很像您所写的,因为它们返回一个新的 NSString

        3
  •  1
  •   tachijuan    14 年前

    我有一个类似的要求,但它是字符串中的字符。假设我是您要大写的字符的索引,这对我很有用:

    curword = [curword stringByReplacingCharactersInRange:NSMakeRange(i,1) 
               withString:[[curword substringWithRange:NSMakeRange(i, 1)] capitalizedString]];
    
        4
  •  1
  •   odyth    13 年前

    如果您分析了这些解决方案,则执行此操作的速度要慢得多:

    NSMutableString *capitolziedString = [NSMutableString stringWithString:originalString];
    NSString *firstChar = [[capitolziedString substringWithRange:NSMakeRange(0,1)] uppercaseString];
    [capitolziedString replaceCharactersInRange:NSMakeRange(0, 1) withString:firstChar];
    

    在运行iOS 5的iphone 4上进行测试时:
    @杜姆斯波克的解决方案运行了0.115750毫秒
    而上述时间为0.064250ms;


    @杜姆斯波克的解决方案运行了0.02232毫秒
    而上述时间为0.007495毫秒;

        5
  •  1
  •   ArtOfWarfare    12 年前

    以最大的可读性为目标,制作一个 category NSString 并赋予它以下功能:

    NSString *capitalizeFirstLetter(NSString *string) {
        NSString *firstCapital = [string substringToIndex:1].capitalizedString;
        return [string stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:firstCapital];
    }
    

    然后在您想要的代码中:

    NSString *capitalizedSentence = capitalizeFirstLetter(dateString);
    

    这种代码很少出现在您需要它的地方,通常应该分解成实用程序类或 类别 提高易读性。