2011-01-29 3 views
0

현재 만들고있는 앱의 경우 문자열을 문자로 분해 한 다음 각 문자를 숫자로 변환해야합니다. 이 일을 생각한 한 가지 방법은 다음 코드를 사용하는 것입니다.NSString 편집에 대한 조언

//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 루프 외부에서 생성 한 새로운 문자열을 읽을 수 있을까? 어떤 제안이라도 도움이 될 것입니다. 또한이 방법을 사용하는 방법은 도움이 될 것입니다. 사전에

감사합니다,

조나단

+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

감사합니다. 빠른 질문 하나; number == 3이면 그 숫자 [i]는 "numbers3"입니까? –

+0

나는 그 중 하나를 해결했다고 걱정하지 마십시오! number == 3이면 mean numbers [i]는 "numbers3"이됩니다. 다시 한 번 감사드립니다! –