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


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 is ₹ 700

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


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.