मैं स्विफ्ट में तार कैसे समेटूं?


188

स्विफ्ट में स्ट्रिंग को कैसे बदलना है?

में Objective-Cहम पसंद करते हैं

NSString *string = @"Swift";
NSString *resultStr = [string stringByAppendingString:@" is a new Programming Language"];

या

NSString *resultStr=[NSString stringWithFormat:@"%@ is a new Programming Language",string];

लेकिन मैं स्विफ्ट-भाषा में ऐसा करना चाहता हूं।


1
स्विफ्ट कंपाइलर + बहुत अच्छी तरह से कंपाइल नहीं कर सकता है। यदि आपके पास एक वाक्य में + के कुछ जोड़े हैं तो यह विफल हो सकता है। उपयोग ()
kalalaka

जवाबों:


335

आप कई तरीकों से तार जोड़ सकते हैं:

let a = "Hello"
let b = "World"

let first = a + ", " + b
let second = "\(a), \(b)"

आप भी कर सकते हैं:

var c = "Hello"
c += ", World"

मुझे यकीन है कि और भी तरीके हैं।

वर्णन का सा

letएक स्थिर बनाता है। (तरह की तरह NSString)। इसे सेट करने के बाद आप इसका मान नहीं बदल सकते। आप इसे अभी भी अन्य चीजों में जोड़ सकते हैं और नए चर बना सकते हैं।

varएक चर बनाता है। (तरह की NSMutableString) तो आप इसके मूल्य को बदल सकते हैं। लेकिन स्टैक ओवरफ्लो पर कई बार इसका जवाब दिया गया है, ( लेट और वेर के बीच अंतर देखें )।

ध्यान दें

हकीकत में letऔर varकर रहे हैं बहुत अलग से NSStringऔर NSMutableStringलेकिन यह सादृश्य मदद करता है।


@ Rajneesh071 यह एक संकलन समय त्रुटि क्यों देगा?
फोगमिस्टर

letएक स्थिर बनाता है। (एक NSString की तरह)। इसे सेट करने के बाद आप इसका मान नहीं बदल सकते। आप इसे अभी भी अन्य चीजों में जोड़ सकते हैं और नए चर बना सकते हैं। varएक चर बनाएं। (तरह तरह NSMutableString) ताकि आप इसके मूल्य को बदल सकें। लेकिन एसओ पर इसका कई बार जवाब दिया जा चुका है। के लिए लग रहा हैdifference between let and var
Fogmeister

let a = "Hello" Let b = "World" let first = a + "," + b काम नहीं करता है, यह वह है जो कार्य करता है, पहले = "(a), (b)"। आपको पहली विधि के साथ एक रनटाइम त्रुटि मिलेगी
जोसेफ

1
@ जोसेफ मेरे लिए ठीक काम करता है। i.imgur.com/T15s4Sp.png हालांकि डाउन वोट के लिए धन्यवाद।
फोगमिस्टर

@ फ़ॉगमिस्टर आप किस संस्करण का उपयोग कर रहे हैं? फ्लॉप xCode 6.3 बीटा पर काम करता है, हो सकता है कि इसके नवीनतम संस्करण पर काम कर रहा हो
यूसुफ

62

आप इन तरीकों से एक स्ट्रिंग जोड़ सकते हैं:

  • str += ""
  • str = str + ""
  • str = str + str2
  • str = "" + ""
  • str = "\(variable)"
  • str = str + "\(variable)"

मुझे लगता है कि मैंने उन सभी का नाम लिया।


31
var language = "Swift" 
var resultStr = "\(language) is a new programming language"

25
एक साइड नोट के रूप में, इसे स्ट्रिंग इंटरपोलेशन कहा जाता है, न कि संघनन।
डॉकटरो

13

यह भी काम करेगा:

var string = "swift"
var resultStr = string + " is a new Programming Language"

11

\ n इसका उपयोग एक स्ट्रिंग को दूसरे स्ट्रिंग में जोड़ने के लिए किया जा रहा है।

var first = "Hi" 
var combineStr = "\(first) Start develop app for swift"

आप यह भी कोशिश कर सकते हैं: - + कीवर्ड।

 var first = "Hi" 
 var combineStr = "+(first) Start develop app for swift"

इस कोड को आज़माएं।



9

बहुत आसान:

let StringA = "Hello"
let StringB = "World"
let ResultString = "\(StringA)\(StringB)"
println("Concatenated result = \(ResultString)")

याlet ResultString = "\(StringA)\(StringB)"
अक्स

यदि प्रक्षेप का उपयोग करते हैं, तो + की जरूरत नहीं है, जैसे अक्स ने उल्लेख किया है। यदि आप + का उपयोग करना पसंद करते हैं, तो प्रक्षेप को हटा दें।
रघु तेजा

9

अब आप स्विफ्ट में stringByAppendingString का उपयोग कर सकते हैं ।

var string = "Swift"
var resultString = string.stringByAppendingString(" is new Programming Language")

5

Xcode ने सामान्य स्ट्रिंग के साथ जोड़े गए वैकल्पिक तारों को स्वीकार नहीं किया। मैंने उस समस्या को हल करने के लिए यह एक्सटेंशन लिखा है:

extension String {
    mutating func addString(str: String) {
        self = self + str
    }
}

तो आप इसे कॉल कर सकते हैं जैसे:

var str1: String?
var str1 = "hi"
var str2 = " my name is"
str1.addString(str2)
println(str1) //hi my name is

हालाँकि आप भी अब ऐसा कुछ कर सकते हैं:

var str1: String?
var str1 = "hi"
var str2 = " my name is"
str1! += str2

कोनसा भाग? क्या आप हद से परिचित हैं?
एसकरौर्थ

हां, मैं सोच रहा था कि '+' को 'ऐडस्ट्रीमिंग ()' में कनवर्ट करने से क्या हासिल होता है। अगर मुझे सही तरीके से याद है तो यह गैर संकलित चर पर उपयोग किए जाने पर आपको संकलक त्रुटि के बजाय चेतावनी भी देगा। अन्यथा यह क्या चल रहा है और IMO, '+' की तुलना में पढ़ने में आसान / तेज़ कुछ भी नहीं है। सच्चाई यह है कि ऐसा कोई कारण हो सकता है कि मैं अंधा हूं और इसीलिए मैं पूछ रहा था कि इस तरह से a सिफारिश ’क्यों की जाती है
user3802077

मैंने इसका उपयोग तब किया जब xcode ने सामान्य स्ट्रिंग के साथ वैकल्पिक स्ट्रिंग को जोड़ना स्वीकार नहीं किया। यह अभी भी प्रत्यक्ष रूप से ऐसा नहीं करता है, लेकिन यह तब काम करता है जब आप स्ट्रिंग को खोलते हैं, इसलिए यह विस्तार बेकार है। इसे पढ़ने के बाद मैं इसे डिलीट कर दूंगा। इसने मुझे एक टिप्पणी
लिखी थी

धन्यवाद के लिए धन्यवाद :)। निश्चित नहीं है कि क्या बेहतर माना जाता है, लेकिन आपके उत्तर के संदर्भ को जोड़कर इसका मूल्य और भी कठिन होगा, क्योंकि यह पहले की तरह उपयोगी नहीं हो सकता है।
user3802077 16

4

इसे स्ट्रिंग इंटरपोलेशन कहा जाता है। यह CONSTANTS, VARIABLE, LITERALS और EXPRESSIONS के साथ NEW स्ट्रिंग बनाने का तरीका है। उदाहरण के लिए:

      let price = 3
      let staringValue = "The price of \(price) mangoes is equal to \(price*price) "

भी

let string1 = "anil"
let string2 = "gupta"
let fullName = string1 + string2  // fullName is equal to "anilgupta"
or 
let fullName = "\(string1)\(string2)" // fullName is equal to "anilgupta"

इसका अर्थ कड़े मूल्यों को समेटना भी है।

आशा है कि यह आपकी मदद करता है।


3

संयुक्त स्ट्रिंग का उपयोग कर मुद्रित करने के लिए

Println("\(string1)\(string2)")

या String3 2 स्ट्रिंग्स के संयोजन के उत्पादन को संग्रहीत करता है

let strin3 = "\(string1)\(string2)"

3

एक भी स्विफ्ट में stringByAppendingFormat का उपयोग कर सकते हैं।

var finalString : NSString = NSString(string: "Hello")
finalString = finalString.stringByAppendingFormat("%@", " World")
print(finalString) //Output:- Hello World
finalString = finalString.stringByAppendingFormat("%@", " Of People")
print(finalString) //Output:- Hello World Of People

2

स्विफ्ट 4.2

आप एक्सटेंशन का उपयोग भी कर सकते हैं:

extension Array where Element == String? {
    func compactConcate(separator: String) -> String {
        return self.compactMap { $0 }.filter { !$0.isEmpty }.joined(separator: separator)
    }
}

उपयोग:

label.text = [m.firstName, m.lastName].compactConcate(separator: " ")

परिणाम:

"The Man"
"The"
"Man"

2

से: मैट न्युबर्ग पुस्तक "iOS 13 स्विफ्ट के साथ प्रोग्रामिंग बुनियादी बातों।" :

दो तारों को मिलाने (जोड़ने) के लिए, सबसे आसान तरीका है + ऑपरेटर का उपयोग करना :

let s = "hello"
let s2 = " world"
let greeting = s + s2

यह सुविधाजनक संकेतन संभव है क्योंकि + ऑपरेटर अतिभारित है: यह एक काम करता है जब ऑपरेंड संख्या (संख्यात्मक जोड़) होते हैं और एक और जब ऑपरेंड स्ट्रिंग्स (कंक्रीटिंग) होते हैं। + ऑपरेटर एक साथ आता है + = काम शॉर्टकट; स्वाभाविक रूप से, बाईं ओर चर को var के साथ घोषित किया जाना चाहिए:

var s = "hello"
let s2 = " world"
s += s2

एक के रूप में विकल्प के लिए + = , आप कॉल कर सकते हैं संलग्न (_ :) उदाहरण विधि:

var s = "hello"
let s2 = " world"
s.append(s2)

जुड़ने वाले तारों का एक और तरीका जुड़ गया है (विभाजक :) विधि। आप संक्षिप्त करने के लिए स्ट्रिंग की एक सरणी के साथ शुरू करते हैं , और इसे उन सभी के बीच डालने वाली स्ट्रिंग को सौंप देते हैं:

let s = "hello"
let s2 = "world"
let space = " "
let greeting = [s,s2].joined(separator:space)

1

आप ऐसा करने के लिए SwiftString ( https://github.com/amayne/SwiftString ) का उपयोग कर सकते हैं ।

"".join(["string1", "string2", "string3"]) // "string1string2string"
" ".join(["hello", "world"]) // "hello world"

अस्वीकरण: मैंने यह एक्सटेंशन लिखा है


1

मैंने बस ऑब्जेक्टिव-सी से स्विफ्ट (4) में स्विच किया, और मुझे पता चला कि मैं अक्सर उपयोग करता हूं:

let allWords = String(format:"%@ %@ %@",message.body!, message.subject!, message.senderName!)

0

स्विफ्ट में 5 सेब ने # प्रतीकों का उपयोग करके रॉ स्ट्रिंग्स का परिचय दिया है।

उदाहरण:

print(#"My name is "XXX" and I'm "28"."#)
let name = "XXX"
print(#"My name is \#(name)."#)

प्रतीक # के बाद आवश्यक है। एक नियमित (नाम) स्ट्रिंग में वर्णों के रूप में व्याख्या की जाएगी।


0

स्विफ्ट 5

आप appendingएपीआई का उपयोग करके इसे प्राप्त कर सकते हैं । यह रिसीवर को दिए गए स्ट्रिंग को जोड़कर बनाया गया एक नया स्ट्रिंग देता है।

एपीआई विवरण: यहाँ

उपयोग करें :

var text = "Hello"
text = text.appending(" Namaste")

परिणाम :

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