답변:
Swift 2.0에서는 생성자를 사용하여 Integer를 초기화 할 수 있습니다
var stringNumber = "1234"
var numberFromString = Int(stringNumber)
toInt()
방법을 사용할 수 없습니다 String
. 따라서이 Int
생성자는 문자열을 정수로 변환하는 유일한 방법입니다.
나는 사용할 것이다 :
var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)
참고 toInt()
:
문자열이 Int에 맞는 정수를 나타내는 경우 해당 정수를 리턴합니다.
var someNumb: Int = stringNumber.toInt()!
@NateCook는 지적
!
전화에, 당신은 선택로 변수를 선언 할 수 있습니다 someNumb: Int? = stringNumber.toInt()
. 그러면 유형 안전 시스템이 foo
존재하지 않을 수 있음을 인식 합니다. !
문자열을 숫자로 변환 할 수 없다면 퍼팅 은 물론 충돌합니다.
스위프트 3.0
유형 1 : NSString을 문자열로 변환
let stringNumb:NSString = "1357"
let someNumb = Int(stringNumb as String) // 1357 as integer
유형 2 : 문자열에 정수만있는 경우
let stringNumb = "1357"
let someNumb = Int(stringNumb) // 1357 as integer
유형 3 : 문자열에 부동 값이있는 경우
let stringNumb = "13.57"
if let stringToFloat = Float(stringNumb){
let someNumb = Int(stringToFloat)// 13 as Integer
}else{
//do something if the stringNumb not have digit only. (i.e.,) let stringNumb = "13er4"
}
stringToFloat
is 를 확인하는 대신을 != nil
사용해야합니다 if let
.
원하는 방법은 toInt()
- toInt()
선택적 Int를 반환 하므로 약간 조심해야 합니다.
let stringNumber = "1234"
let numberFromString = stringNumber.toInt()
// numberFromString is of type Int? with value 1234
let notANumber = "Uh oh"
let wontBeANumber = notANumber.toInt()
// wontBeANumber is of type Int? with value nil
toInt()
올바른 방법입니다. 옵션은 언어의 핵심 부분
당신이 사용할 수있는 NSString
경우에만.
objective-c와 매우 비슷합니다. 모든 데이터 유형이 있지만 as NSString
추가가 필요합니다
var x = "400.0" as NSString
x.floatValue //string to float
x.doubleValue // to double
x.boolValue // to bool
x.integerValue // to integer
x.intValue // to int
또한 toInt()
기능이 추가되었습니다. Apple Inc.“Swift Programming Language”를 참조하십시오. iBooks. https://itun.es/us/jEUH0.l 49 페이지
x.toInt()
as NSString
. @gwcoffey 수정
위의 답변은 문자열 값이 "700.00"이므로 도움이되지 않았습니다.
와 스위프트 2.2 이 나를 위해 작동
let myString = "700.00"
let myInt = (myString as NSString).integerValue
NSFormatterClass에 myInt를 전달했습니다.
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.maximumFractionDigits = 0
let priceValue = formatter.stringFromNumber(myInt!)!
//Now priceValue is ₹ 700
이 블로그 게시물 덕분에 .
Double()
우리가 사용 하는 것과 같은 방식을 사용하십시오 Int()
. NSString에 브리징을 사용할 필요가 없습니다.
Double()
다음 사용 Int()
. 이와 같이 : if let d = Double("700.00") { let i = Int(d); print (i) }
:)
8 : 1 확률 (*)
var stringNumb: String = "1357"
var someNumb = Int(stringNumb)
또는
var stringNumb: String = "1357"
var someNumb:Int? = Int(stringNumb)
Int(String)
옵션 반환 Int?
이 아닌가 Int
.
안전한 사용 : 명시 적으로 랩 해제하지 마십시오
let unwrapped:Int = Int(stringNumb) ?? 0
또는
if let stringNumb:Int = stringNumb { ... }
(*) 실제로 응답 var someNumb: Int = Int(stringNumb)
하지 않은 이유 는 무엇입니까?
간단하지만 더러운 방법
// Swift 1.2
if let intValue = "42".toInt() {
let number1 = NSNumber(integer:intValue)
}
// Swift 2.0
let number2 = Int(stringNumber)
// Using NSNumber
let number3 = NSNumber(float:("42.42" as NSString).floatValue)
확장 방법
로케일과 소수로 훌륭하게 재생되므로 실제로 더 좋습니다.
extension String {
var numberValue:NSNumber? {
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
return formatter.numberFromString(self)
}
}
이제 간단하게 할 수 있습니다 :
let someFloat = "42.42".numberValue
let someInt = "42".numberValue
var someNumb: Int? = Int(stringNumb)
또는var someNumb = Int(stringNumb)