Случайный верхний регистр - нижний регистр

Я хотел бы, чтобы строка изменяла буквы в нижнем или верхнем регистре случайным образом (в Xcode). например: «example» на «ExaMpLe» или «eXAMPle» или ExAmPlE или что-то еще в этом роде случайным образом .. горячо, я могу это решить?

спасибо


person elionline85    schedule 14.08.2011    source источник
comment
что ты уже испробовал? С какой частью вы боретесь? Генерация случайных чисел или преобразование символов в верхний регистр?   -  person Oliver Charlesworth    schedule 15.08.2011


Ответы (3)


NSString имеет методы lowercaseString и uppercaseString. Вы можете перебирать символы в строке как последовательность подстрок, используя некоторый случайный источник для вызова соответствующего нижнего/верхнего регистра для каждого из них, собирая результат. Что-то вроде...

NSMutableString result = [NSMutableString string];
for (NSUInteger i = 0; i < [myString length]; i++)
{
  NSString *substring = [myString substringWithRange:NSMakeRange(i, 1)];
  [result appendString:(rand() % 2) ? [substring lowercaseString]
                                    : [substring uppercaseString]];
}

Вы можете предпочесть лучший источник энтропии, чем rand, но он подойдет для примера (не забудьте заполнить его, если вы используете этот случай как есть). Если строки большие, вы можете сделать это на месте на NSMutableString.

person Adam Wright    schedule 14.08.2011

Вы можете либо использовать методы -uppercaseString и -lowercaseString для подстрок, либо использовать функции toupper() и tolower() для символов. Невозможно просто отфильтровать строку; вы захотите использовать массив символов NSMutableString или C.

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

person jtbandes    schedule 14.08.2011

Вы можете разбить слово на массив букв и зациклить его, используя случайное число для определения регистра, после зацикливания массива просто соедините буквы вместе, используя NSMutableString.

У NSString есть методы uppercaseString и lowercaseString, которые вы можете использовать.

person Daniel    schedule 14.08.2011