দ্রুতগতিতে স্ট্রিং থেকে পূর্ণসংখ্যা মান পান


134

সুতরাং আমি এটি করতে পারি:

var stringNumb: NSString = "1357"

var someNumb: CInt = stringNumb.intValue

তবে আমি এটি করার উপায় খুঁজে পাচ্ছি না ডাব্লু / এ String। আমি কিছু করতে চাই:

var stringNumb: String = "1357"

var someNumb: Int = Int(stringNumb)

এটিও কাজ করে না:

var someNumbAlt: Int = myString.integerValue

1
var someNumb: Int? = Int(stringNumb)বাvar someNumb = Int(stringNumb)
সুইফট আরকিটেক্ট

উত্তর:


179

সুইফট ২.০ আপনি কনস্ট্রাক্টর ব্যবহার করে পূর্ণসংখ্যার সূচনা করতে পারেন

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

14
সুইফট ২.০ হিসাবে আপনার আর toInt()অংশ হিসাবে পদ্ধতি নেই String। সুতরাং এই Intকনস্ট্রাক্টর এখন স্ট্রিংগুলিকে ইনসে রূপান্তর করার একমাত্র উপায়।
মরগান উইল্ড

1
সেমিকোলনটি প্রয়োজনীয় নয়
সেবাস্তিয়ান

আপনি দয়া করে কীভাবে হ্যান্ডেল করবেন তা যদি ব্যবহারকারী পাঠ্য ক্ষেত্রে অন্তর্ভুক্ত সীমা সংখ্যার চেয়ে বেশি নম্বর প্রবেশ করে
খুশবু ধোতে

1
@ সেবাস্তিয়ান কি হতাশ নয়? :)
ভিক্টর

94

আমি ব্যবহার করব:

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

দ্রষ্টব্য toInt():

যদি স্ট্রিংটি কোনও পূর্ণসংখ্যার প্রতিনিধিত্ব করে যা কোনও ইন্টার এর সাথে ফিট করে তবে সংশ্লিষ্ট পূর্ণসংখ্যাটি প্রদান করে।


5
এটি কাজ করেছে, যদিও আপনি স্পষ্টভাবে var someNumb: Int = stringNumber.toInt()!ভেরটি ঘোষণা করেন, আপনাকে একটি বিস্ময়বোধক পয়েন্ট যুক্ত করতে হবে: @ নেটটুক হিসাবে উল্লেখ করেছেন
লোগান

আমি এটি স্পষ্টভাবে ঘোষণা করছি না। সংকলকটি জানে যে নাম্বার থেকে স্ট্রিংটি কোনও আন্ত হওয়া উচিত কারণ এটি এক হিসাবে শুরু করা হয়েছে ...
CW0007007

আমি জানি আপনি নন তবে আমি আছি। এটি করার জন্য আমাকে সেই সমন্বয় করতে হয়েছিল। আপনার কোডটি সঠিক, এটি একটি মন্তব্য হিসাবে যুক্ত করুন।
লোগান

হ্যাঁ এটি কেবল তখনই একটি মান ফেরত দেয় যখন নোটটি পয়েন্ট আউট হিসাবে মানটি কোনও ইন্টারে ফিট করে fits অন্যথায় এটি শূন্য ফেরত ...
CW0007007

5
পরিবর্তে নির্বাণ !কলে, আপনি ঐচ্ছিক হিসাবে আপনার ভেরিয়েবল ডিক্লেয়ার করতে পারেন: someNumb: Int? = stringNumber.toInt()। তারপরে ধরণ সুরক্ষা সিস্টেমটি সচেতন হবে যা fooসম্ভবত বিদ্যমান নেই। ফেলে !অবশ্যই বিপর্যয়ের হবে আপনার স্ট্রিং একটি সংখ্যা রূপান্তর করতে পারবে না।
gwcoffey

18

সুইফট ৩.০ এ

প্রকার 1: এনএসএসস্ট্রিংকে স্ট্রিংয়ে রূপান্তর করুন

    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"
    }

"টাইপ 3" এর কোডটি আদর্শ নয়। পরীক্ষা পরিবর্তে stringToFloatহয় != nil, আপনি ব্যবহার করা উচিত if let
rmaddy

11

আপনি যে পদ্ধতিটি চান তা হ'ল 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()এটি করার সঠিক উপায়।
বিকল্পগুলি

অবশ্যই, আপনাকে কেবল সচেতন হতে হবে যে আপনি একটি Intচ্ছিকের সাথে কাজ করছেন, কোনও সরাসরি ইন্টের সাথে নয়।
নেট কুক

5

আপনি যদি NSStringশুধুমাত্র একটি ব্যবহার করতে সক্ষম হন ।

এটি উদ্দেশ্য-সি এর সাথে বেশ মিল। সমস্ত ডেটা ধরণের রয়েছে তবে 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()ফাংশন যুক্ত রয়েছে অ্যাপল ইনক দেখুন “" দ্য সুইফ্ট প্রোগ্রামিং ভাষা। " iBooks। https://itun.es/us/jEUH0.l পৃষ্ঠা 49

x.toInt()

যোগ করতে ভুলে গেছি as NSString। এটি @gwcoffey ঠিক করেছেন
জন রিসেলভাতো

2
আমি এনএসএসস্ট্রিং ব্যবহার করতে চাই না, প্রশ্ন দেখুন।
লোগান

4

উপরের উত্তরটি আমাকে সহায়তা করতে পারেনি কারণ আমার স্ট্রিংয়ের মান "700.00" ছিল

সঙ্গে সুইফট 2.2 এই আমার জন্য কাজ করে

let myString = "700.00"
let myInt = (myString as NSString).integerValue

আমি মাই আইএনটি এনএসফর্মেটর ক্লাসে পাস করেছি

let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.maximumFractionDigits = 0

let priceValue = formatter.stringFromNumber(myInt!)!

//Now priceValue is700

এই ব্লগ পোস্ট ধন্যবাদ ।


1
এই প্রশ্নটি একটি স্ট্রিং থেকে পূর্ণসংখ্যা পাওয়ার বিষয়ে । আপনার ক্ষেত্রে, আপনার কোনও ইন্টার নেই, আপনার ডাবল রয়েছে। সুইফটে, Double()আমরা যেভাবে ব্যবহার করছি ঠিক একইভাবে ব্যবহার করুন Int()। এনএসএস স্ট্রিংয়ের ব্রিজিং ব্যবহার করার দরকার নেই।
এরিক আয়া

আরে আপনার পরামর্শের জন্য @ এরিকD ধন্যবাদ তবে " আমি যখন মুদ্রা রূপান্তরকারী হিসাবে এনএসএনম্বারফর্মেটর ক্লাসে প্রবেশ করছিলাম কেবল তখনই আমি পূর্ণসংখ্যার চেয়েছিলাম "।
সুইফটবয়

1
ভাল এই ক্ষেত্রে আপনি Double() তারপর ব্যবহার করতে পারেন Int()if let d = Double("700.00") { let i = Int(d); print (i) }
এরিক আয়া

2

আপনি স্ট্রিং থেকে এনএসএসস্ট্রিং এ ব্রিজ করতে পারেন এবং সিআইএনটি থেকে ইনট এ এভাবে রূপান্তর করতে পারেন:

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

1

আমি সেই উদ্দেশ্যে একটি এক্সটেনশন লিখেছি। এটি সর্বদা একটি প্রদান করে Int। যদি স্ট্রিংটি কোনওটিতে না মানায় তবে Int0 প্রদান করা হবে।

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

2
এই হিসাবে আরও সাবলীলভাবে লেখা যেতে পারে return self.toInt() ?? 0। এটির জন্য কোনও এক্সটেনশান পদ্ধতি না রেখে কেবল ইনলাইন এটিকে লেখা ভাল write
jlong64

0

আরও সাধারণ সমাধান এক্সটেনশন হতে পারে

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

উদাহরণস্বরূপ, এটি ফ্লাট দ্বারা সুইফট নেটিভ স্ট্রিং অবজেক্টকে প্রসারিত করা হয়


0

স্ট্রিং স্ট্রিং ইন ইন ইন সুইট 2.0 তে রূপান্তর করুন:

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

ব্যবহার .intergerValue or intValue for Int32


0

8: 1 বিজোড় (*)

var stringNumb: String = "1357"
var someNumb = Int(stringNumb)

অথবা

var stringNumb: String = "1357"
var someNumb:Int? = Int(stringNumb)

Int(String)একটি Int?নয়, একটি returnsচ্ছিক প্রদান করে Int


নিরাপদ ব্যবহার: সুস্পষ্টভাবে মোড়ানো হবে না

let unwrapped:Int = Int(stringNumb) ?? 0

অথবা

if let stringNumb:Int = stringNumb { ... }

(*) উত্তরের কোনও উত্তরই কেন var someNumb: Int = Int(stringNumb)কাজ করছে না তা বোঝায়।


আপনাকে @ ব্যবহারকারী 3441734 ধন্যবাদ। আমার cast ালাই ব্যবহার করা উচিত হয়নি ।
সুইফট আরকিটেক্ট

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.