2011-01-29 2 views
0

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

//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; 

    } 

..........

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

Спасибо заранее,

Джонатан

+0

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

ответ

3

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

// 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 ... 
+0

Спасибо! Один быстрый вопрос; Если число == 3 означает, что числа [i] будут «numbers3» ?. –

+0

Не беспокойтесь, я сработал! Это означает, что если число == 3 означает, что числа [i] будут «numbers3». Еще раз спасибо! –

Смежные вопросы