使用for循环骆驼式短语

时间:2019-01-02 18:40:52

标签: objective-c loops nsstring

我必须将第一个字符串的字母小写,删除空格并用大写的形式保留其余部分。因此,我的输出应类似于:

这是美国-> thisIsAmerica

Apple macbook-> appleMacbook

supercalifragalisticexpialidocious->保持不变

我能够删除空格并大写字母,然后使用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

我们将不胜感激!

2 个答案:

答案 0 :(得分:0)

使用以下步骤:

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

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

  2. 遍历数组,并对每个字符串应用大写或小写,类似于您已经做过的事情。

    [[iChar lowercaseString] characterAtIndex:0];

  3. 再次将数组中的字符串连接为一个字符串

我希望按照以下步骤编写代码没问题。

答案 1 :(得分:0)

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

-(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:@""];
}