Я хотел бы, чтобы строка изменяла буквы в нижнем или верхнем регистре случайным образом (в Xcode). например: «example» на «ExaMpLe» или «eXAMPle» или ExAmPlE или что-то еще в этом роде случайным образом .. горячо, я могу это решить?
спасибо
Я хотел бы, чтобы строка изменяла буквы в нижнем или верхнем регистре случайным образом (в Xcode). например: «example» на «ExaMpLe» или «eXAMPle» или ExAmPlE или что-то еще в этом роде случайным образом .. горячо, я могу это решить?
спасибо
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
.
Вы можете либо использовать методы -uppercaseString
и -lowercaseString
для подстрок, либо использовать функции toupper()
и tolower()
для символов. Невозможно просто отфильтровать строку; вы захотите использовать массив символов NSMutableString
или C.
См. этот вопрос для как получить случайное логическое значение, которое вы можете использовать, чтобы решить, должен ли символ быть в верхнем или нижнем регистре.
Вы можете разбить слово на массив букв и зациклить его, используя случайное число для определения регистра, после зацикливания массива просто соедините буквы вместе, используя NSMutableString.
У NSString есть методы uppercaseString и lowercaseString, которые вы можете использовать.