programing

NSString을 NSNumber로 변환하는 방법

minimums 2023. 4. 13. 20:43
반응형

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

반응형