Советы по редактированию NSStrings - PullRequest
0 голосов
/ 29 января 2011

Для приложения, которое я сейчас создаю, мне нужно разбить строку на символы и затем преобразовать каждый из этих символов в число. Один из способов сделать это - использовать следующий код:

//Get string length
int stringLength = [myString length];

//Create new variable for "While" loop
int count = stringLength;

//Start "While" loop

while (count != 0) {

    //What I want her is for the NSString to be ("letter%i",count) but I don't know how to do this 
    letter1 = [myString substringWithRange:NSMakeRange(0,stringLenght-count)];

    //each letter = 1 so it will move down one letter at a time  
    count--

}

и тогда у меня будет что-то вроде:

if (string1 == @"a") {

    number1 = 5;

}



if (string2 == @"a") {

        number2 = 5;

    }

..........

Смогу ли я прочитать новые строки, созданные мной вне цикла while? Любые предложения будут очень полезны. Также любой способ сделать это другим способом также будет полезен.

Заранее спасибо,

Jonathan

1 Ответ

3 голосов
/ 30 января 2011

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

// Get length of string
NSUInteger len = [myString length];

// allocate number buffer
NSUInteger *numbers = calloc(len, sizeof(NSUInteger));

// loop through the string's characters and assign to the number array.
for (NSUInteger i = 0; i < len; i++)
{
    unichar thisChar = [myString characterAtIndex:i];

    if (thisChar == 'A')
        numbers[i] = 5;
    else if (thisChar == 'C')
        numbers[i] = 10;
}

// do what you want with the numbers array, and then free it.
free(numbers)

Также рассмотрите возможность использования взглядатаблица для преобразования символа в число (если имеется большое количество преобразований из числа в число).

И еще одна вещь, вы не можете сравнивать строки, используя ==, потому чтоэто проверит на равенство указателей, а не на равенство строк.Когда вы сравниваете строки, вы должны использовать:

if ([someString isEqualToString:anotherString])
    // ... and so on ...
...