使用 for 循环来驼峰式大小写一个短语

using for loops to camel case a phrase

我必须将第一个字符串的字母小写,删除 space 并将短语的其余部分大写。所以我的输出应该是这样的:

这是美国 -> thisIsAmerica

苹果 macbook -> appleMacbook

supercalifragalisticexpialidocious -> 保持不变

我能够删除 space 并将字母大写,然后使用 for 循环获取索引 0 并尝试将其小写,但它似乎不起作用。我的代码如下:

#import "CaseMaker.h"

@implementation CaseMaker
- (instancetype)initWithString:(NSString *)string{
    self = [super init];
    if (self) {
        self.camelString = string;
    }
    return self;
}

-(NSString *)process {
    NSString * output = [[NSString alloc] init];


    for (int i = 0; [_camelString length]; i++) {
        NSString *iChar = [NSString stringWithFormat:@"%c", [_camelString characterAtIndex:0]];
        [[iChar lowercaseString] characterAtIndex:0];
    }
    output = [[_camelString capitalizedString] stringByReplacingOccurrencesOfString:@" " withString:@""];

return output;

}

@end

不胜感激!

使用以下步骤:

  1. 使用函数componentsSeparatedByString:在空格处分割字符串。结果是一个包含分隔词的数组。它应该看起来像这样:

    NSArray *wordsArray = [camelString componentsSeparatedByString:@" "];

  2. 遍历数组并对每个字符串应用大写或小写,类似于您已经执行的操作。

    [[iChar lowercaseString] characterAtIndex:0];

  3. 再次将数组中的字符串拼接成一个字符串

希望按照这些步骤写代码没问题。

  • 创建可变数组。
  • 通过用 space 个字符分隔项目来形成输入字符串的数组。
  • 如果字符串中没有 spaces return 则字符串小写。
  • 将第一项变为小写并将其添加到输出数组。
  • 迭代从索引 1 开始的组件,将所有对象大写并将它们添加到输出数组。
  • 最后通过空字符串和return结果连接数组。

-(NSString *)process {
    NSMutableArray<NSString *> * output = [NSMutableArray array];
    NSArray<NSString *> *components = [camelString componentsSeparatedByString:@" "];
    if (components.count < 2) { return camelString.lowercaseString; }
    [output addObject:components[0].lowercaseString];
    for (NSInteger i = 1; i < components.count; ++i) {
        [output addObject:components[i].capitalizedString];
    }
    return [output componentsJoinedByString:@""];
}