だから私はこれを行うことができます:
var stringNumb: NSString = "1357"
var someNumb: CInt = stringNumb.intValue
しかし、それをString
で実行する方法が見つかりません。私は何かをしたいのですが。
var stringNumb: String = "1357"
var someNumb: Int = Int(stringNumb)
これもうまくいきません。
var someNumbAlt: Int = myString.integerValue
Swift 2.コンストラクタを使ってIntegerを初期化できます
var stringNumber = "1234"
var numberFromString = Int(stringNumber)
私は使用します:
var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)
toInt()
に注意してください。
文字列がIntに収まる整数を表す場合は、対応する整数を返します。
Swift 3.0では
タイプ1:NSStringをStringに変換
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:文字列がFloat値の場合
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"
}
必要なメソッドは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
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()
関数も追加されています。 https://itun.es/us/jEUH0.l 49ページ
x.toInt()
上記の答えは私の文字列値が "700.00"だったので私を助けませんでした
Swift 2.2でこれは私のために働きます
let myString = "700.00"
let myInt = (myString as NSString).integerValue
MyIntをNSFormatterClassに渡しました
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.maximumFractionDigits = 0
let priceValue = formatter.stringFromNumber(myInt!)!
//Now priceValue is ₹ 700
this ブログ記事に感謝します。
StringからNSStringにブリッジして、CIntからIntに次のように変換できます。
var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)
そのための拡張機能を書きました。常にInt
を返します。文字列がInt
に収まらない場合は、0が返されます。
extension String {
func toTypeSafeInt() -> Int {
if let safeInt = self.toInt() {
return safeInt
} else {
return 0
}
}
}
単純だが汚れた方法
// 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
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)
が機能しなかった理由を実際に解決した答えはありませんでした。
より一般的な解決策は拡張です。
extension String {
var toFloat:Float {
return Float(self.bridgeToObjectiveC().floatValue)
}
var toDouble:Double {
....
}
....
}
これは、例えばSwFネイティブのStringオブジェクトをtoFloatで拡張したものです。
Swift 2.0で文字列をIntに変換する:
var str:NSString = Data as! NSString
var cont:Int = str.integerValue
.intergerValue or intValue for Int32
を使う