2012-03-09 3 views
-1
NSString * addString=[arrayyyy componentsJoinedByString:@","]; 

NSLog(@"add string is: %@",addString);// result is: 45,1 

이제 위의 문자열을 정수로 변환하고 싶습니다.iPhone 응용 프로그램에서 NSString을 NSInteger로 변환하는 방법은 무엇입니까?

나는 이것을 시도 :

NSInteger myInt=[addString intValue]; 
//NSLog(@"myInt is: %d",myInt);// result is: 45 
+0

결과가 45도이면, 그 int로 변환된다. [addString intValue] int로 변환하고 [addString integerValue]를 NSInteger로 변환합니다. –

+1

http://stackoverflow.com/questions/4791470/convert-nsstring-to-nsinteger – bdparrish

+1

@ user993223 "문자열을 정수로 변환"이란 무엇을 의미합니까? 달성하고자하는 결과는 무엇입니까? –

답변

2

는 45.1을 예상한다면 잘못된 두 가지가 있습니다 :

  1. 45.1integer하지 않다가. 값을 읽으려면 floatValue을 사용해야합니다.

  2. 45,1 (쉼표 표시)은 유효한 부동 소수점 숫자가 아닙니다. 일부 지역에서는 45,1이 유효하지만 (1,000.25 대신에 1 000,25을 프랑스어로 사용하는 경우) 을 읽기 전에 NSNumberFormatter 문자열을 변환해야합니다.

.

// Can't compile and verify this right now, so please bear with me. 
NSString *str = @"45,1"; 
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease]; 
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease]; // lets say French from France 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setLocale:locale]; 
float value = [[formatter numberFromString:str] floatValue]; // value = 45.1 
+0

답장을 보내 주셔서 감사합니다. 그러나 45,1처럼 정수 형식과 동일한 결과를 원합니다. –

+0

45,1이 정수가 아닙니다. – HelmiB

+1

'45.1' 또는'45,1'은 ** 십진 ** 값입니다.** 정수 **로 저장할 수 없습니다. 정수는 전체 값입니다. 10 진수 값을 정수로 변환하는 유일한 방법은 값을 반올림하는 것입니다. 결과는 '45 '가됩니다. –

0

질문을 많이 읽으면서 내가 원하는 것을 이해할 수 있다고 생각합니다.

출발점이 될 것으로 보인다 :

NSLog(@"add string is: %@",addString);// result is: 45,1 

그리고 현재의 종점은 다음과 같습니다

NSLog(@"myInt is: %d",myInt);// result is: 45 

그러나 당신은 여전히 ​​45,1

을 인쇄 할 것으로 보인다 내 두 번째 문자열 [@ "45", @ "1"] 배열이 arrayyyy이고 두 값을 모두 정수로 출력하고 싶다는 것입니다. 이 그럼 내가 무슨 생각을 당신이 원하는 경우입니다 : 배열에 적어도 두 문자열이없는 경우

NSInteger myInt1 = [[arrayyyy objectAtIndex:0] intValue]; 
NSInteger myInt2 = [[arrayyyy objectAtIndex:1] intValue]; 
NSLog(@"add string is: %d,%d",myInt1,myInt2); 

이것은 NSRangeException로 끔찍하게 충돌합니다.

NSInteger myInt1 = -1; 
NSInteger myInt2 = -1; 
if ([arrayyyy length] >0) myInt1 = [[arrayyyy objectAtIndex:0] intValue]; 
if ([arrayyyy length] >1) myInt2 = [[arrayyyy objectAtIndex:1] intValue]; 
NSLog(@"add string is: %d,%d",myInt1,myInt2); 

을하지만 -1의 가드 값이 실제 데이터에 존재하지 않을 것이라는 가정으로도이 나쁜 : 그래서 적어도 당신은해야한다.

0

너무 수학 기호 작동 NSExpression을보십시오 (즉 +, -, /, *)

NSNumber *numberValue = [[NSExpression expressionWithFormat:inputString] expressionValueWithObject:nil context:nil]; 

// do something with numberValue 
관련 문제