использование для петель для верблюда - PullRequest
0 голосов
/ 02 января 2019

Я должен в нижнем регистре буква первой строки, удалить пробел и заглавные буквы в оставшейся части фразы. Поэтому мой вывод должен выглядеть так:

Это Америка -> 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 голосов
/ 02 января 2019
  • Создать изменяемый массив.
  • Сделать массив из входной строки, разделив элементы пробелами.
  • Если в строке нет пробелов, вернуть строку в нижнем регистре.
  • Сделать первый элемент в нижнем регистре и добавить его в выходной массив.
  • Выполните итерации компонентов, начиная с индекса 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:@""];
}
0 голосов
/ 02 января 2019

Используйте следующие шаги:

  1. Используйте функцию componentsSeparatedByString:, чтобы разбить строку на пробелы.Результатом является массив с разделенными словами.Это должно выглядеть примерно так:

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

  2. Цикл над массивом и применение прописных или строчных букв к каждой строке, аналогично тому, что вы уже сделали.

    [[iChar lowercaseString] characterAtIndex:0];

  3. Снова объединить строки в массиве в одну строку

Я надеюсь, что это не проблема написатькод, следующий за этими шагами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...