2010-02-15 3 views
0

제목으로. NSScanner를 테스트했지만 일부 이상한 문자열을 전달했습니다. (예 : 123aaa). < -> 숫자를 엄격하게 변환 할 수있는 방법이 있습니까?코코아의 문자열 표현에서 숫자 값을 파싱하는 방법은 무엇입니까?

+0

어떤 숫자 유형입니까? 정수? 부동 소수점? 무슨 기지 요? – outis

+0

NSInteger와 float 둘 다였습니다. 나는 도트 문자 (".")를 찾아 클래스를 분류했다. – Eonil

답변

1

자신 만의 롤백을 쉽게 할 수 있습니다. 전체 문자열이 스캔되었는지 또는 추가 문자가 있는지 테스트하십시오.

NSScanner *scanner = [NSScanner localizedScannerWithString:str]; 
int i; 
if (![scanner scanInt:&i] || [scanner scanLocation] < [str length]) { 
    // str contains additional characters 
    ... 
} else { 
    // str contains only an int 
    ... 
} 
+0

감사합니다. 이것은 효과가있을 수 있습니다. – Eonil

0

NSScanner는 그다지 상위 수준이 아닙니다. 직접 문자열을 검증해야합니다.

한 가지 방법은 문자를 숫자 집합까지 스캔하고 실패했다고 주장한 다음 숫자를 스캔 한 다음 scan to the end을 실패한 것으로 주장합니다.

관련 문제