回答:
Swift 2.0では、コンストラクターを使用してIntegerを初期化できます
var stringNumber = "1234"
var numberFromString = Int(stringNumber)
toInt()
、の一部としてこのメソッドは使用できなくなりましたString
。したがって、このInt
コンストラクタは、文字列をintに変換する唯一の方法です。
私は使用します:
var stringNumber = "1234"
var numberFromString = stringNumber.toInt()
println(numberFromString)
注toInt()
:
文字列がIntに収まる整数を表す場合、対応する整数を返します。
var someNumb: Int = stringNumber.toInt()!
@ NateCookが指摘したように
!
呼び出しを行う代わりに、変数をオプションとして宣言できますsomeNumb: Int? = stringNumber.toInt()
。次に、タイプセーフティシステムはfoo
存在しない可能性があることを認識します。!
もちろん、文字列が数値に変換できない場合、パッティングはクラッシュします。
Swift 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:文字列に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"
}
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プログラミング言語」を参照してください。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
myIntをNSFormatterClassに渡しました
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) }
:)
そのための拡張機能を書きました。常にを返しますInt
。文字列がに収まらない場合はInt
、0が返されます。
extension String {
func toTypeSafeInt() -> Int {
if let safeInt = self.toInt() {
return safeInt
} else {
return 0
}
}
}
return self.toInt() ?? 0
。そのための拡張メソッドを用意するよりも、そのようにインラインで記述する方がおそらく良いでしょう。
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)