NSString을 NSNumber로 변환하는 방법
변환 방법NSString여러 원시 데이터 유형을 포함합니다(예:int,float,char,unsigned int등?문제는 실행 시 문자열에 포함되는 숫자 유형을 알 수 없다는 것입니다.
방법은 알고 있습니다만, 부호 없는 부동소수점 값도 사용할 수 있을지 모르겠습니다.
long long scannedNumber;
NSScanner *scanner = [NSScanner scannerWithString:aString];
[scanner scanLongLong:&scannedNumber];
NSNumber *number = [NSNumber numberWithLongLong: scannedNumber];
도와 주셔서 감사해요.
를 사용합니다.NSNumberFormatter:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterDecimalStyle;
NSNumber *myNumber = [f numberFromString:@"42"];
문자열이 유효한 숫자가 아닌 경우myNumber될 것이다nil유효한 번호라면, 이것으로, 다음의 모든 것을 취득할 수 있습니다.NSNumber어떤 수치인지 알아내는 게 좋을 것 같아요
사용할 수 있습니다.-[NSString integerValue],-[NSString floatValue]단, 올바른(로컬에 민감한 등) 방법은-[NSNumberFormatter numberFromString:]적절한 로케일에서 NS Number로 변환되어 지정된 설정이 됩니다.NSNumberFormatter(부동소수점 값 허용 여부 포함)
목표-C
(주의: 이 메서드는 다른 로케일에서는 잘 동작하지 않지만, 다른 로케일보다 약간 빠릅니다.NSNumberFormatter)
NSNumber *num1 = @([@"42" intValue]);
NSNumber *num2 = @([@"42.42" floatValue]);
재빠르다
간단하지만 더러운 방법
// Swift 1.2
if let intValue = "42".toInt() {
let number1 = NSNumber(integer:intValue)
}
// Swift 2.0
let number2 = Int("42')
// Swift 3.0
NSDecimalNumber(string: "42.42")
// Using NSNumber
let number3 = NSNumber(float:("42.42" as NSString).floatValue)
익스텐션 웨이(Extension-way) 이게 더 좋아요.로컬이나 소수점에도 잘 어울리니까요.
extension String {
var numberValue:NSNumber? {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return formatter.number(from: self)
}
}
다음 작업을 간단하게 수행할 수 있습니다.
let someFloat = "42.42".numberValue
let someInt = "42".numberValue
정수로 시작하는 문자열의 경우, 예를 들어,@"123",@"456 ft",@"7.89"를 사용합니다.
그렇게,@([@"12.8 lbs" integerValue])하는 것과 같다[NSNumber numberWithInteger:12].
다음 작업도 수행할 수 있습니다.
NSNumber *number = @([dictionary[@"id"] intValue]]);
재미있게 보내!
정수를 수신하고 있는 것을 알고 있는 경우는, 다음을 사용할 수 있습니다.
NSString* val = @"12";
[NSNumber numberWithInt:[val intValue]];
여기 NS Number의 작업 샘플이 있습니다.현지화된 번호의 NSString(xCode 3.2.4, osX 10.6)을 읽어내는 포메터입니다.이것에 의해서, 지금까지의 시간을 절약할 수 있습니다.주의: 후행 공백('8,765.4')은 처리할 수 있지만 선행 공백은 처리할 수 없으며, 잘못된 입력 문자열은 "8", "8q", "8q"와 "8q")을 처리할 수 없습니다.
NSString *tempStr = @"8,765.4";
// localization allows other thousands separators, also.
NSNumberFormatter * myNumFormatter = [[NSNumberFormatter alloc] init];
[myNumFormatter setLocale:[NSLocale currentLocale]]; // happen by default?
[myNumFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
// next line is very important!
[myNumFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; // crucial
NSNumber *tempNum = [myNumFormatter numberFromString:tempStr];
NSLog(@"string '%@' gives NSNumber '%@' with intValue '%i'",
tempStr, tempNum, [tempNum intValue]);
[myNumFormatter release]; // good citizen
나는 현을 더블로 바꾸고 싶었다.위의 답변은 나에게 별로 효과가 없었다.하지만 이것은 다음과 같습니다.Objective-C에서 문자열 변환을 수행하는 방법
내가 한 일은 거의 다:
double myDouble = [myString doubleValue];
모두 감사합니다!피드백을 조합하여 텍스트 입력(문자열)에서 정수로 변환합니다.또, 입력이 정수인지 아닌지도 알 수 있습니다. : )
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:thresholdInput.text];
int minThreshold = [myNumber intValue];
NSLog(@"Setting for minThreshold %i", minThreshold);
if ((int)minThreshold < 1 )
{
NSLog(@"Not a number");
}
else
{
NSLog(@"Setting for integer minThreshold %i", minThreshold);
}
[f release];
NSDecimal Number가 할 수 있을 것 같습니다.
예:
NSNumber *theNumber = [NSDecimalNumber decimalNumberWithString:[stringVariable text]]];
NSDecimalNumber는 NSNumber의 서브클래스이므로 암묵적인 캐스팅이 허용됩니다.
C의 기준은?atoi
int num = atoi([scannedNumber cStringUsingEncoding:NSUTF8StringEncoding]);
주의할 점이 있을까요?
쓰면 요.[string intValue] ★★★★★★★★★★★★★★★★★」[string floatValue] ★★★★★★★★★★★★★★★★★」[string doubleValue]
클래스를 사용할 수도 있습니다.
이 코드 8.3.3 ios 10.3 지원도 가능합니다.
[NSNumber numberWithInt:[@"put your string here" intValue]]
NSDecimalNumber *myNumber = [NSDecimalNumber decimalNumberWithString:@"123.45"];
NSLog(@"My Number : %@",myNumber);
이거 드셔보세요
NSNumber *yourNumber = [NSNumber numberWithLongLong:[yourString longLongValue]];
주의 - 요건에 따라 longLongValue를 사용하고 있습니다.필요에 따라 integerValue, longValue 또는 기타 형식을 사용할 수도 있습니다.
Swift 3에서 작업
NSDecimalNumber(string: "Your string")
늦은 건 알지만 아래 코드가 효과가 있어요.
이 코드를 사용해 보세요.
NSNumber *number = @([dictionary[@"keyValue"] intValue]]);
이게 도움이 될 거야감사해요.
extension String {
var numberValue:NSNumber? {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return formatter.number(from: self)
}
}
let someFloat = "12.34".numberValue
언급URL : https://stackoverflow.com/questions/1448804/how-to-convert-an-nsstring-into-an-nsnumber
'programing' 카테고리의 다른 글
| T-SQL을 사용한 퍼지 매칭 (0) | 2023.04.18 |
|---|---|
| Excel VBA에서 진행 표시줄을 만들려면 어떻게 해야 합니까? (0) | 2023.04.18 |
| ERROR ITMS-9000: "용장 바이너리 업로드.열차 '1.0'의 빌드 버전이 '1.0'인 바이너리 업로드가 이미 존재합니다." (0) | 2023.04.13 |
| XAML에서 명령 매개 변수로 열거 값 전달 (0) | 2023.04.13 |
| 서브폴더/서브디렉토리를 무시하려면 어떻게 해야 합니까? (0) | 2023.04.13 |