web-dev-qa-db-ja.com

swiftで文字列から整数値を取得する

だから私はこれを行うことができます:

var stringNumb: NSString = "1357"

var someNumb: CInt = stringNumb.intValue

しかし、それをStringで実行する方法が見つかりません。私は何かをしたいのですが。

var stringNumb: String = "1357"

var someNumb: Int = Int(stringNumb)

これもうまくいきません。

var someNumbAlt: Int = myString.integerValue
125
Logan

Swift 2.コンストラクタを使ってIntegerを初期化できます

var stringNumber = "1234"
var numberFromString = Int(stringNumber)
168
Burusothman

私は使用します:

var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)

toInt()に注意してください。

文字列がIntに収まる整数を表す場合は、対応する整数を返します。

95
CW0007007

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"
    }
17
Rajamohan S

必要なメソッドは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
11
Nate Cook

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()
5
John Riselvato

上記の答えは私の文字列値が "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 ブログ記事に感謝します。

3
swiftBoy

StringからNSStringにブリッジして、CIntからIntに次のように変換できます。

var myint: Int = Int(stringNumb.bridgeToObjectiveC().intValue)
2
Connor

そのための拡張機能を書きました。常にIntを返します。文字列がIntに収まらない場合は、0が返されます。

extension String {
    func toTypeSafeInt() -> Int {
        if let safeInt = self.toInt() {
            return safeInt
        } else {
            return 0
        }
    }
}
1
timo-haas

単純だが汚れた方法

// 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
0
Kevin R

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)が機能しなかった理由を実際に解決した答えはありませんでした。

0
SwiftArchitect

より一般的な解決策は拡張です。

extension String {
    var toFloat:Float {
        return Float(self.bridgeToObjectiveC().floatValue)
    }
    var toDouble:Double {
        ....
    }
    ....
}

これは、例えばSwFネイティブのStringオブジェクトをtoFloatで拡張したものです。

0
loopmasta

Swift 2.0で文字列をIntに変換する:

var str:NSString = Data as! NSString
var cont:Int = str.integerValue

.intergerValue or intValue for Int32を使う

0
Pablo Ruan