ios obj C разделить строку на символы и добавить буквы - PullRequest
4 голосов
/ 13 июля 2011

Привет, ребята, как я могу отделить строку, например: пример, в пример, и сгенерировать суммирование сулативное с определенным значением для каждой буквы [a = 1, b =2, c = 3, .. z = 26] спасибо!

Ответы [ 3 ]

9 голосов
/ 13 июля 2011

Вы можете использовать characterAtIndex для извлечения конкретного символа из вашей строки, например,

[myString characterAtIndex:1]

Или перебрать все:

for (int i=0; i < [myString length]; i++) {
    ... [myString characterAtIndex:i]
   // You can then decide how to assign a value to each individual string, via a switch.

}
7 голосов
/ 13 июля 2011

Вот способ сделать это:

NSMutableArray *chars = [NSMutableArray arrayWithCapacity:26];
// fill the array
unsigned int i;
for(i = 0; i < 26; i++) {
    NSString *s = [NSString stringWithFormat:@"%c", (i+65)];
    [chars addObject:s];
}
// now you have [0:"a", 1:"b", ..., 25:"z"]
NSUInteger sum = 0;
NSString lowerCaseString = [myString lowerCaseString];
for (int i=0; i < [myString length]; i++) {
    NSString *character = [lowerCaseString substringWithRange:NSMakeRange(i, 1)];
    // edit thanks to mortenfast ;-)
    NSUInteger pos = [chars indexOfObject:character];
    if(pos != NSNotFound) {
        sum += (pos+1);
    }
}
3 голосов
/ 13 июля 2011

Блочная версия для iOS 4.0:

__block int sum = 0;
NSString *string = [NSString stringWithString:@"abcdefghijklmnopqrstuvwxyz"];
[string enumerateSubstringsInRange:NSMakeRange(0,[string length]) 
                           options:NSStringEnumerationByComposedCharacterSequences 
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

    // 'a'=97=0x61=01100001, 'A'=65=0x41=01000001
    // 26 letters and 2^5-1=31 so only 5 lower bits needed
    sum += [substring characterAtIndex:0] & 0x1F;

    // which is the same as
    // sum += [substring characterAtIndex:0] -'a'+1;

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