स्विफ्ट में स्ट्रिंग में कनवर्ट करें


553

मैं बाहर काम करने की कोशिश कर रहा हूं कि स्विफ्ट Intमें कैसे डालें String

मैं एक वर्कअराउंड का पता लगाता NSNumberहूं , लेकिन मैं यह जानना चाहता हूं कि स्विफ्ट में यह सब कैसे करना है।

let x : Int = 45
let xNSNumber = x as NSNumber
let xString : String = xNSNumber.stringValue

जवाबों:


960

परिवर्तित Intकरने के लिए String:

let x : Int = 42
var myString = String(x)

और चारों ओर दूसरा रास्ता - करने के Stringलिए परिवर्तित Int:

let myString : String = "42"
let x: Int? = myString.toInt()

if (x != nil) {
    // Successfully converted String to Int
}

या यदि आप स्विफ्ट 2 या 3 का उपयोग कर रहे हैं:

let x: Int? = Int(myString)

2
जब यह काम करता है, तो toStringनीचे दिए गए उत्तर में दिखाए गए फ़ंक्शन का उपयोग करें।
यबकोस

2
Intऐसा प्रतीत नहीं होता है कि toString()कम से कम Xcode 6.2 में कोई विधि नहीं है संपादित करें: मैं देखता हूं कि एक वैश्विक toStringविधि है ( नहीं Int.toString() ), किसी को भी String()कंस्ट्रक्टर का उपयोग करने पर फायदा पता है ?
निलोक

ध्यान दें कि String(Int?)"वैकल्पिक (इंट)" लिखता है, कम से कम स्विफ्ट 2 में, यह वह नहीं हो सकता है जो आपका मतलब था। इसके बजाय का उपयोग करेंInt?.description
Teejay

अद्भुत है, लेकिन मेरे लिए काम नहीं करता है। मेरे पास एक वैकल्पिक Int है, और स्ट्रिंग (myInt) अभ्यस्त संकलन - यह दावा करता है "Int। स्ट्रिंग में परिवर्तित नहीं किया जा सकता है"। मेरे लिए या तो कोई स्ट्रिंग () या toInt () विधियाँ उपलब्ध नहीं हैं, या stringValue और intValue नहीं हैं। यहां तक ​​कि एक स्ट्रिंग (myInt!) मुझे बताएगा कि शुरुआती को कुछ नाम बदलकर स्ट्रिंग की तरह किया गया है (वर्णन: myInt!)।
मोति श्नोर

9
स्विफ्ट 4 के लिए, नीचे Hamed Gh का उत्तर देखें। सही उपयोग हैString(describing: x)
डेविड गे

92

नीचे उत्तर की जाँच करें:

let x : Int = 45
var stringValue = "\(x)"
print(stringValue)

45
meh, यह एक बदसूरत और अनावश्यक काम है जब Stringपहले से ही एक निर्माता स्वीकार कर रहा हैInt
गेब्रियल पेट्रोनेला

3
आपको यह क्या गलत लगा? आपने वोट क्यों डाला? @GabrielePetronella
प्रेमकुमार

2
यह वांछित परिणाम प्राप्त करने का सिर्फ एक भयानक तरीका है। उत्तर, तकनीकी रूप से सही है, हालांकि, और इस कारण से मैं नीचे नहीं गया।
गेब्रियल पेट्रोनेला

मुझे नहीं लगता कि यह विशेष रूप से बदसूरत है, सिवाय इसके कि कुछ पार्सिंग उपकरण स्ट्रिंग प्रक्षेप को अच्छी तरह से संभाल नहीं सकते हैं। अन्यथा, कौन जानता है - यह तेज हो सकता है। जावास्क्रिप्ट में "" + x का उपयोग करना आमतौर पर एक स्ट्रिंग कंस्ट्रक्टर का उपयोग करने से अधिक तेज़ होता है, उदाहरण के लिए। यह उदाहरण केवल छोटे वर्णों के एक जोड़े का है, लेकिन मैं निश्चित रूप से उन मामलों में स्ट्रिंग प्रक्षेप को प्राथमिकता दूंगा जहां आप कई चर से एक वाक्य का निर्माण कर रहे थे।
डेस्ट

1
मैं इस उत्तर को केवल इसलिए नहीं दूंगा क्योंकि इसकी बदसूरत लेकिन जैसा कि @GabrielePetronella ने कहा, जब Stringएक निर्माणकर्ता स्वीकार करता है तो उसे स्ट्रिंग प्रक्षेप का उपयोग करने की कोई आवश्यकता नहीं है Int। इसकी बहुत अधिक स्पष्ट और संक्षिप्त है।
इसुरु

58

यहाँ 4 तरीके दिए गए हैं:

var x = 34
var s = String(x)
var ss = "\(x)"
var sss = toString(x)
var ssss = x.description

मैं सोच सकता हूं कि कुछ लोगों के पास एसएस के साथ एक मुद्दा होगा। लेकिन यदि आप अन्य सामग्री युक्त स्ट्रिंग का निर्माण करना चाह रहे हैं तो क्यों नहीं।


5
मैं बस स्विफ्ट और आईओएस 8 पर स्टैनफोर्ड यू के कुछ नए पाठ्यक्रम देखता हूं। आपका var ss = "\(x)"उदाहरण बिल्कुल यही है कि उन्होंने कैसे एक स्ट्रिंग को डबल बदलने की सलाह दी। जो मुझे लगा कि आसान और महान है।
मार्कशीट

और सैस के बारे में अधिक सोचना - यह वास्तव में बुरा है।
इयान ब्रैडबरी

2
स्ट्रिंग का नाम बदलकर स्ट्रिंग
जिरसन टवेरा

1
s अब है (स्विफ्ट 3.1) स्ट्रिंग (वर्णन: x) पुराने सिंटैक्स में कंपाइलर त्रुटि होती है।
मोति श्नोर

3
@MottiShneor नहीं, यह गलत है। String(describing:)डिबगिंग के अलावा किसी और चीज के लिए कभी भी इस्तेमाल नहीं किया जाना चाहिए। यह सामान्य स्ट्रिंग इनिशियलाइज़र नहीं है।
एरिक आया

55

स्विफ्ट 3.0 में :

var value: Int = 10
var string = String(describing: value)

7
ये गलत है। String(describing:)डिबगिंग के अलावा किसी और चीज के लिए कभी भी इस्तेमाल नहीं किया जाना चाहिए। यह सामान्य स्ट्रिंग इनिशियलाइज़र नहीं है।
एरिक आया

क्या यह स्विफ्ट 5 में अभी भी गलत है? @ayaio, प्रलेखन से आधारभूत कारण गलत नहीं लगता है
Zonily Jame

27

स्विफ्ट 4 :

let x:Int = 45
let str:String = String(describing: x)

Developer.Apple.com> स्ट्रिंग> init (वर्णन करना :)

स्ट्रिंग (वर्णन :) :) initializer किसी भी प्रकार की आवृत्ति को स्ट्रिंग में बदलने का पसंदीदा तरीका है।

कस्टम स्ट्रिंग परिवर्तनीय

यहाँ छवि विवरण दर्ज करें


3
परिणाम वैकल्पिक (1)
हर्षिल कोटेचा

11
ये गलत है। String(describing:)डिबगिंग के अलावा किसी और चीज के लिए कभी भी इस्तेमाल नहीं किया जाना चाहिए। यह सामान्य स्ट्रिंग इनिशियलाइज़र नहीं है।
एरिक आया

3
घाम, मोरिथ्ज़ ने पहले से ही एक ही प्रश्न में सही उत्तर प्रदान किया है मेरे उत्तर की जांच करें बस सामान्य स्ट्रिंग () इनिशियलाइज़र का उपयोग करें। लेकिन इसे पहले एक वैकल्पिक, अनकैप नहीं दें। या, आपके उदाहरण में, का उपयोग करें ??। इस तरह: str = String (x ?? 0)
Harshil Kotecha

2
@HamedGh लिंक में उदाहरणों को देखो जो आप स्वयं देते हैं। describingविधि यहाँ है करने के लिए ... का वर्णन अपनी सामग्री। यह एक विवरण देता है। कभी-कभी यह रूपांतरण के समान होता है, कभी-कभी नहीं । के लिए एक वैकल्पिक दें describingऔर आप परिणाम देखेंगे ... यह रूपांतरण नहीं होगा। परिवर्तित करने के लिए एक सरल, समर्पित तरीका है: सामान्य स्ट्रिंग इनिलाइज़र का उपयोग करना, जैसा कि अन्य उत्तरों में बताया गया है। पूरा पृष्ठ पढ़ें जिसे आप लिंक करते हैं: देखें कि यह विधि विभिन्न तरीकों का उपयोग करके विवरणों की खोज करती है, जिनमें से कुछ गलत परिणाम देंगे यदि आप सटीक रूपांतरण की उम्मीद करते हैं ..
Eric Aya

2
आपको वास्तव में इस उत्तर के वर्णन वाले भाग को हटा देना चाहिए। स्ट्रिंग कंस्ट्रक्टर में किसी भी पैरामीटर नाम का उपयोग किए बिना रूपांतरण किया जाना चाहिए।
TimTwoToes

26

पूर्णता के लिए, आप भी उपयोग कर सकते हैं:

let x = 10.description

या कोई अन्य मूल्य जो विवरण का समर्थन करता है।


5
यह मेरे लिए काम किया जब एक लेबल में मूल्य दिखाने की कोशिश कर रहा था। अन्य दृष्टिकोणों के साथ यह हमेशा 0. के बजाय वैकल्पिक (0) था। धन्यवाद
हार्डकोर_ग्रेवरबॉबर

11

स्विफ्ट 4:

वैकल्पिक () शब्द के बिना लेबल में मान दिखाने की कोशिश कर रहा है ।

यहाँ x का उपयोग करके एक Int मान है।

let str:String = String(x ?? 0)

3
सं String(describing:)डिबगिंग से कुछ और के लिए कभी नहीं किया जाना चाहिए। यह सामान्य स्ट्रिंग इनिशियलाइज़र नहीं है।
एरिक आया

हैलो @Moritz तो मैं वैकल्पिक शब्द को हटाने के लिए क्या कर सकता हूं? मेरे पास एक इंट वैल्यू है और जितना मैं लेबल में छापना चाहता हूं
हर्षिल कोटेचा

बस सामान्य String()इनिशियलाइज़र का उपयोग करें । लेकिन इसे पहले एक वैकल्पिक, अनकैप नहीं दें। या, अपने उदाहरण में, उपयोग करें ??। जैसे:let str = String(x ?? 0)
एरिक आया

developer.apple.com/documentation/swift/string/2427941-in मैं आपकी बात समझता हूं कि वर्णन करने का क्या उपयोग है
हर्षिल कोटेचा

यह ज्यादातर डिबगिंग उद्देश्यों के लिए है। आप कक्षाओं के नाम का वर्णन कर सकते हैं, उदाहरणों का वर्णन प्राप्त कर सकते हैं, इत्यादि लेकिन इसका उपयोग कभी भी ऐसे तार के लिए नहीं किया जाना चाहिए जो ऐप में ही उपयोग किए जाते हैं।
एरिक आया

8

भविष्य में अपने आप को समय और परेशानी से बचाने के लिए आप एक इंट एक्सटेंशन कर सकते हैं। आमतौर पर मैं एक साझा कोड फ़ाइल बनाता हूं, जहां मैं एक्सटेंशन, एनम और अन्य मजेदार चीजें डालता हूं। एक्सटेंशन कोड कैसा दिखता है:

extension Int
{
    func toString() -> String
    {
        var myString = String(self)
        return myString
    }
}

फिर बाद में जब आप एक इंट को एक स्ट्रिंग में बदलना चाहते हैं तो आप कुछ ऐसा कर सकते हैं:

var myNumber = 0
var myNumberAsString = myNumber.toString()

संभावित रूप से बेवकूफी भरा सवाल, लेकिन क्या यह एक फ़ंक्शन या एक कम्प्यूटेड चर होना चाहिए? मुझे याद नहीं है कि इन मामलों में आम तौर पर कौन सी स्विफ्ट का उपयोग होता है - यह है toIntया toInt()
मॉरी मार्कोविट्ज़

1
अपने आप को बचाने के लिए कुछ समय और परेशानी का उपयोग करें myNumber.description। किसी एक्सटेंशन की जरूरत नहीं
निग

8

में तेजी से 3.0 यह है कि हम कैसे परिवर्तित कर सकते हैं है Intकरने के लिए Stringऔर Stringकरने के लिएInt

//convert Integer to String in Swift 3.0

let theIntegerValue :Int = 123  // this can be var also
let theStringValue :String = String(theIntegerValue)


//convert String to Integere in Swift 3.0


let stringValue : String = "123"
let integerValue : Int = Int(stringValue)!

1
कोड की अंतिम पंक्ति में, हमें अंत में विस्मयादिबोधक चिह्न की आवश्यकता क्यों है?
उमर तारिक

@OmarTariq, क्योंकि हम स्पष्ट रूप से संकलक को बताते हैं कि integerValueप्रकार है Int। तब इसके लिए शून्य मान नहीं हो सकता। इसलिए संकलक आपको इसे खोलना बताता है। यदि आप इससे बचना चाहते हैं, तो इसका उपयोग करें let integerValue = Int(stringValue)। तब आपको कोई समस्या नहीं होगी। देर से उत्तर के लिए क्षमा करें।
चनाका काल्डेरा

1
@OmarTariq इस मामले में खुलासा करना वाकई बहुत बुरा हो सकता है। यदि स्ट्रिंग एक संख्या नहीं है, तो यह आपके एप्लिकेशन को क्रैश कर देगा। आपको यह सुनिश्चित करने के लिए वास्तव में जांच करनी चाहिए कि यह वैध है और इसे खोलना नहीं है।
चार्ली फिश

7

जो भी कारण स्वीकार किए जाते हैं, वह मेरे लिए काम नहीं करता। मैं इस दृष्टिकोण के साथ गया:

var myInt:Int = 10
var myString:String = toString(myInt)


4

स्विफ्ट 2:

var num1 = 4
var numString = "56"
var sum2 = String(num1) + numString
var sum3 = Int(numString)

2

iam इस सरल दृष्टिकोण का उपयोग करते हुए

स्ट्रिंग टू इंट:

 var a = Int()
var string1 = String("1")
a = string1.toInt()

और इंट से स्ट्रिंग तक:

var a = Int()
a = 1
var string1 = String()
 string1= "\(a)"

2

स्ट्रिंग यूनिकोड इंट को स्ट्रिंग में परिवर्तित करें

उन लोगों के लिए जो एक यूनिकोड स्ट्रिंग में कनवर्ट करना चाहते हैं, आप निम्न कार्य कर सकते हैं:

let myInteger: Int = 97

// convert Int to a valid UnicodeScalar
guard let myUnicodeScalar = UnicodeScalar(myInteger) else {
    return ""
}

// convert UnicodeScalar to String
let myString = String(myUnicodeScalar)

// results
print(myString) // a

या वैकल्पिक रूप से:

let myInteger: Int = 97
if let myUnicodeScalar = UnicodeScalar(myInteger) {
    let myString = String(myUnicodeScalar)
}

@ जेवरला, यह अभी भी काम करता है। मैंने अभी इसे Xcode 8.2 (स्विफ्ट 3.0.2) में रिटायर किया है। Stringप्रारंभकर्ता एक ले जा सकते हैं UnicodeScalar
सुरगछ


0

स्ट्रिंग को इंट में बदलने के लिए

var numberA = Int("10")

Print(numberA) // It will print 10

स्ट्रिंग में इंट को गुप्त करने के लिए

var numberA = 10

1 तरीका)

print("numberA is \(numberA)") // It will print 10

दूसरा तरीका)

var strSomeNumber = String(numberA)

या

var strSomeNumber = "\(numberA)"


0

स्विफ्ट 3.0 में, आप नीचे दिए गए अनुसार पूर्णांक को स्ट्रिंग में बदल सकते हैं

let a:String = String(stringInterpolationSegment: 15)

दूसरा तरीका है

let number: Int = 15
let _numberInStringFormate: String = String(number)

// या 15 के स्थान पर कोई पूर्णांक संख्या


1
API संदर्भ से "इस इनिशियलाइज़र को सीधे कॉल न करें। यह संकलक द्वारा उपयोग किया जाता है जब स्ट्रिंग इंटरप्रिटेशन की व्याख्या करता है।" हो सकता है कि अगर आप इसे कहीं इस्तेमाल कर रहे हैं तो आप दोबारा जांच करना चाहते हैं।
राहुल शर्मा

0

मैं स्ट्रिंग इंटरपोलेशन का उपयोग करना पसंद करता हूं

let x = 45
let string = "\(x)"

प्रत्येक ऑब्जेक्ट में कुछ स्ट्रिंग प्रतिनिधित्व है। इससे चीजें सरल हो जाती हैं। उदाहरण के लिए यदि आपको Stringकई मानों के साथ कुछ बनाने की आवश्यकता है । आप इसमें कोई गणित भी कर सकते हैं या कुछ शर्तों का उपयोग कर सकते हैं

let text = "\(count) \(count > 1 ? "items" : "item") in the cart. Sum: $\(sum + shippingPrice)"

0

यदि आपको स्विफ्ट एक्सटेंशन पसंद है, तो आप निम्नलिखित कोड जोड़ सकते हैं

extension Int
{
    var string:String {
        get {
            return String(self)
        }
    }
}

उसके बाद, आप अपने द्वारा जोड़े गए तरीके से स्ट्रिंग प्राप्त कर सकते हैं

var x = 1234
var s = x.string


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.