दिलचस्प पोस्ट
चारों ओर तर्कों की चर संख्या पास करना क्या PHP नामस्थान में वेरिएबल्स होते हैं? कैसे ग्रहण से java.library.path को सेट करें file_get_contents (): SSL ऑपरेशन कोड 1 के साथ विफल हुआ। और अधिक यूआरएल_ के लिए फ्लास्क स्टैटिक फाइल्स से लिंक करें एक नई खुली खिड़की पर सामग्री जोड़ें Row_Number से भिन्न एसक्यूएल क्वेरी परिवर्तनीय आकार स्ट्रक्चर सी ++ IE 10 के साथ रिपोर्ट व्यूअर का प्रिंट बटन असंगत है? सरणी परिवर्तन के लिए कैसे देखें? कॉल मुख्य () खुद को सी ++ में? गिट के साथ एक विशिष्ट टैग डाउनलोड करें लापता पुश अधिसूचना एंटाइटेलमेंट क्या निष्पादन समय सीमा के लिए नींद का समय लगता है? यूनिक्स / लिनक्स शैल में मिलान करने के बाद मैं व्युत्क्रम या नकारात्मक वाइल्डकार्ड का उपयोग कैसे कर सकता हूं?

स्ट्रिंग की लंबाई प्राप्त करें

आप String की लंबाई कैसे प्राप्त करते हैं? उदाहरण के लिए, मेरे पास एक चर परिभाषित है जैसे:

 var test1: String = "Scott" 

हालांकि, मुझे स्ट्रिंग पर एक लम्बाई विधि नहीं मिल सकती है।

वेब के समाधान से एकत्रित समाधान "स्ट्रिंग की लंबाई प्राप्त करें"

स्विफ्ट 4 की तरह

आगामी स्विफ्ट 4 के साथ, यह बस होगा:

 test1.count 

कारणों से।

(मार्टिन आर के लिए धन्यवाद)

स्विफ्ट 2 की तरह:

स्विफ्ट 2 के साथ, ऐप्पल ने वैश्विक कार्यों को प्रोटोकॉल एक्सटेंशन में बदल दिया है, एक्सटेंशन जो एक प्रोटोकॉल के अनुरूप किसी भी प्रकार से मेल खाते हैं। इस प्रकार नई सिंटैक्स है:

 test1.characters.count 

(हेड अप के लिए जॉन डिफूल के लिए धन्यवाद)

स्विफ्ट 1 के रूप में

गिनती वर्ण विधि का प्रयोग करें:

 let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪" println("unusualMenagerie has \(count(unusualMenagerie)) characters") // prints "unusualMenagerie has 40 characters" 

सही ऐप्पल स्विफ्ट गाइड से

(ध्यान दें, 1.2 की तुलना में स्विफ्ट के संस्करणों के लिए, इसके बजाय countElements(unusualMenagerie) होगी)

आपके चर के लिए, यह होगा

 length = count(test1) // was countElements in earlier versions of Swift 

या आप test1.utf16count का उपयोग कर सकते हैं

TLDR:

स्विफ्ट 2.0 और 3.0 के लिए, test1.characters.count उपयोग test1.characters.count । लेकिन, कुछ चीजें हैं जिन्हें आपको पता होना चाहिए। तो, पर पढ़ें।

स्विफ्ट में वर्णों की गिनती

स्विफ्ट 2.0 से पहले, count वैश्विक फ़ंक्शन थी। स्विफ्ट 2.0 की तरह, इसे एक सदस्य फ़ंक्शन कहा जा सकता है।

 test1.characters.count 

यह String में यूनिकोड वर्णों की वास्तविक संख्या वापस करेगा, इसलिए यह अर्थ में सबसे सही विकल्प है कि, यदि आप स्ट्रिंग प्रिंट करेंगे और हाथों से वर्णों की गणना करेंगे, तो आप एक ही परिणाम प्राप्त करेंगे

हालांकि, जिस तरह से Strings स्विफ्ट में लागू की जाती हैं, वैसे अक्षरों को हमेशा ही स्मृति की मात्रा नहीं लेती है, इसलिए ध्यान रखें कि यह अन्य भाषाओं में सामान्य चरित्र गणना पद्धतियों से काफी भिन्न व्यवहार करती है।

उदाहरण के लिए, आप test1.utf16.count भी उपयोग कर सकते हैं

लेकिन, जैसा कि नीचे बताया गया है, लौटा हुआ मूल्य को characters पर कॉलिंग की count के समान नहीं माना जाता है।

भाषा संदर्भ से:

विस्तारित ग्रैपीम समूहों को एक या एक से अधिक यूनिकोड स्केलर्स से बनाया जा सकता है। इसका अर्थ है कि अलग-अलग पात्रों-और एक ही चरित्र के अलग-अलग प्रस्तुतिकरण-को स्टोर करने के लिए अलग-अलग स्मृति की आवश्यकता हो सकती है। इस वजह से, स्विफ्ट में वर्ण प्रत्येक स्ट्रिंग के प्रतिनिधित्व के भीतर स्मृति की समान मात्रा नहीं लेते हैं। नतीजतन, एक स्ट्रिंग में वर्णों की संख्या को इसकी विस्तारित ग्रैपमेम क्लस्टर सीमाओं को निर्धारित करने के लिए स्ट्रिंग के माध्यम से पुनरारंभ किए बिना गणना नहीं की जा सकती। यदि आप विशेष रूप से लंबे स्ट्रिंग मानों के साथ काम कर रहे हैं, तो सावधान रहें कि अक्षरों के गुणों को उस स्ट्रिंग के वर्णों को निर्धारित करने के लिए पूरे स्ट्रिंग में यूनिकोड स्केलर्स पर पुनरावृत्त होना चाहिए।

वर्ण संपत्तियों द्वारा लौटा दिए गए पात्रों की गणना हमेशा एक ही वर्ण वाली NSString की लंबाई की संपत्ति के समान नहीं होती है। NSString की लंबाई स्ट्रिंग के यूटीएफ -16 प्रस्तुतीकरण के भीतर 16-बिट कोड इकाइयों की संख्या पर आधारित होती है, न कि स्ट्रिंग के भीतर यूनिकोड विस्तारित ग्रैपमी समूहों की संख्या।

एक ऐसा उदाहरण जो पूरी तरह से ऊपर वर्णित स्थिति को दिखाता है, एक एकल इमोजी वर्ण वाली स्ट्रिंग की लंबाई की जांच करना, जैसा कि टिप्पणियों में n00neimp0rtant द्वारा बताया गया है।

 var emoji = "👍" emoji.characters.count //returns 1 emoji.utf16.count //returns 2 

स्विफ्ट 1.2 अपडेट: संग्रह के आकार की गिनती के लिए कोई गणना नहीं है। बस प्रतिस्थापन के रूप में गिनती फ़ंक्शन का उपयोग करें: गणना ("स्विफ्ट")

स्विफ्ट 2.0, 3.0 और 3.1:

strLength = string.characters.count दें

स्विफ्ट 4.0: [एप्पल डॉक्युमेंटेशन – तार]

strLength = string.count दें

 let str = "Hello" let count = str.length // returns 5 (Int) extension String { var length: Int { return countElements(self) } // Swift 1.1 } extension String { var length: Int { return count(self) } // Swift 1.2 } extension String { var length: Int { return characters.count } // Swift 2.0 } 

स्विफ्ट 4

"string".count

😉

स्विफ्ट 3

 extension String { var length: Int { return self.characters.count } } 

प्रयोग

"string".length

यदि आप बस एक स्ट्रिंग खाली है या नहीं (0 की लंबाई के लिए जाँच) देखने की कोशिश कर रहे हैं, स्विफ्ट String पर एक सरल बूलियन परीक्षण विधि प्रदान करता है

 myString.isEmpty 

इस सिक्के के दूसरी तरफ लोग उद्देश्य सी से पूछ रहे थे कि कैसे पूछना है कि एक स्ट्रिंग खाली थी, जहां जवाब 0 की लंबाई की जांच करना था:

NSString खाली है

tl; dr यदि आप मानव-पठनीय वर्णों की संख्या के अनुसार एक स्ट्रिंग प्रकार की लंबाई चाहते हैं, तो countElements () का उपयोग करें यदि आप विस्तारित ग्राफी समूह की संख्या के संदर्भ में लंबाई जानना चाहते हैं , तो अंतइंडएक्स का उपयोग करें । विवरण के लिए पढ़ें

स्ट्रिंग प्रकार को यूनिकोड वर्णों के आदेश संग्रह (यानी अनुक्रम) के रूप में लागू किया जाता है, और यह कलेक्शनटाइप प्रोटोकॉल के अनुरूप है, जो कि _CollectionType प्रोटोकॉल के अनुरूप है, जो कि countElements () द्वारा अपेक्षित इनपुट प्रकार है। इसलिए, countElements () कहा जा सकता है, एक स्ट्रिंग प्रकार से गुजारें, और यह वर्णों की गणना वापस करेगा।

हालांकि, कलेक्शनटाइप के अनुरूप, जो बदले में _CollectionType के अनुरूप है, स्ट्रिंग भी प्रारंभआइंडएक्स और एंड इंडेक्स कंप्यूटेंट गुणों को लागू करता है, जो वास्तव में पहले वर्ण क्लस्टर से पहले इंडेक्स की स्थिति का प्रतिनिधित्व करते हैं और क्रमशः अंतिम वर्ण क्लस्टर के बाद सूचकांक की स्थिति । इसलिए, स्ट्रिंग "एबीसी" में, ए से पहले सूचकांक की स्थिति और सी के बाद 3 है। इसलिए, एंड इंडीज़ = 3, जो स्ट्रिंग की लंबाई भी है।

तो, एंड्रॉइड का उपयोग किसी भी स्ट्रिंग टाइप की लंबाई प्राप्त करने के लिए किया जा सकता है, फिर, सही है?

खैर, हमेशा नहीं … यूनिकोड वर्ण वास्तव में ग्राफ़ी समूहों को बढ़ाए जाते हैं , जो एक या अधिक यूनिकोड स्केलर के एक एकल मानव-पठनीय चरित्र को बनाने के लिए जोड़ते हैं।

 let circledStar: Character = "\u{2606}\u{20DD}" // ☆⃝ 

circledStar यू + 2606 (एक सफेद तारा), और यू + 20 डीडी (एक संयोजन घेर चक्र) से बना एक एकल चरित्र है। चलो चक्करदार तार से एक स्ट्रिंग बनाते हैं और countElements () और endIndex के परिणामों की तुलना करें।

 let circledStarString = "\(circledStar)" countElements(circledStarString) // 1 circledStarString.endIndex // 2 

स्विफ्ट 2.0 में count अब और काम नहीं करती। आप इसका उपयोग इसके बजाय कर सकते हैं:

 var testString: String = "Scott" var length = testString.characters.count 

वैश्विक फ़ंक्शन का उपयोग करने के मुकाबले यहां कुछ छोटा और अधिक स्वाभाविक है:

 aString.utf16count 

मुझे नहीं पता कि यह बीटा 1 में उपलब्ध है, हालांकि। लेकिन यह निश्चित रूप से बीटा 2 में है

स्विफ्ट 1.2 के utf16Count रूप में हटा दिया गया है। आपको अब वैश्विक count() फ़ंक्शन का उपयोग करना चाहिए और स्ट्रिंग के UTF16 दृश्य को पास करना चाहिए। नीचे का उदाहरण …

 let string = "Some string" count(string.utf16) 

Xcode 6 बीटा 4 के लिए अपडेट किया गया, विधि बदलने utf16count -> utf16Count

  var test1: String = "Scott" var length = test1.utf16Count 

या

  var test1: String = "Scott" var length = test1.lengthOfBytesUsingEncoding(NSUTF16StringEncoding) 

XCode 7.3 और स्विफ्ट 2.2 के लिए।

 let str = "🐶" 

1) यदि आप दृश्य वर्णों की संख्या चाहते हैं:

 str.characters.count // 1 

2) यदि आप 16-bit code units within the string's UTF-16 representation में 16-bit code units within the string's UTF-16 representation चाहते हैं:

 str.utf16.count // 2 



अधिकांश समय, 1) वह है जो आपको चाहिए

आपको कब 2 की आवश्यकता होगी? मुझे 2 के लिए एक उपयोग केस मिला है):

 let regex = try! NSRegularExpression(pattern:"🐶", options: NSRegularExpressionOptions.UseUnixLineSeparators) let str = "🐶🐶🐶🐶🐶🐶" let result = regex.stringByReplacingMatchesInString(str, options: NSMatchingOptions.WithTransparentBounds, range: NSMakeRange(0, str.utf16.count), withTemplate: "dog") print(result) // dogdogdogdogdogdog 

यदि आप 1 का उपयोग करते हैं), तो परिणाम गलत है:

 let result = regex.stringByReplacingMatchesInString(str, options: NSMatchingOptions.WithTransparentBounds, range: NSMakeRange(0, str.characters.count), withTemplate: "dog") print(result) // dogdogdog🐶🐶🐶 

स्विफ्ट 2.x में निम्नलिखित है कि स्ट्रिंग की लंबाई कैसे प्राप्त करें

 let findLength = "This is a string of text" findLength.characters.count 

24 रिटर्न

आप इस तरह से कोशिश कर सकते हैं

 var test1: String = "Scott" var length = test1.bridgeToObjectiveC().length 

स्विफ्ट 2.0: एक गिनती प्राप्त करें: yourString.text.characters.count

यह कैसे उपयोगी है इसका उदाहरण एक यूआईटीक्स्टव्यू में कुछ संख्या (उदाहरण के लिए 150) से एक चरित्र उलटी गिनती दिखाने के लिए होगा:

 func textViewDidChange(textView: UITextView) { yourStringLabel.text = String(150 - yourStringTextView.text.characters.count) } 

Xcode 6.1.1 में

 extension String { var length : Int { return self.utf16Count } } 

मुझे लगता है कि दिमागदार हर छोटी संस्करण पर इसे बदल देंगे।

अपने टेक्स्टव्यू या टेक्स्टफील्ड से स्ट्रिंग मान प्राप्त करें:

 let textlengthstring = (yourtextview?.text)! as String 

स्ट्रिंग में वर्णों की गिनती ढूंढें:

 let numberOfChars = textlength.characters.count 
 var str = "Hello, playground" var newString = str as NSString countElements(str) 

यह नियमित स्विफ्ट स्ट्रिंग में वर्णों को गिना जाता है

 countElements((newString as String)) 

यह NSString में वर्णों को गिना जाता है

स्ट्रिंग इन स्विफ्ट की गणना करने का सर्वोत्तम तरीका यह है:

 var str = "Hello World" var length = count(str.utf16) 

स्ट्रिंग और NSString टोल फ्री ब्रिज हैं ताकि आप सभी विधियों का इस्तेमाल कर सकते हैं जो NSString के लिए त्वरित स्ट्रिंग के साथ उपलब्ध है

 let x = "test" as NSString let y : NSString = "string 2" let lenx = x.count let leny = y.count 
 test1.characters.count 

आपको अपने स्ट्रिंग में अक्षरों / संख्याओं की संख्या मिल जाएगी।

उदाहरण के लिए:

 test1 = "StackOverflow" print(test1.characters.count) 

( प्रिंट " 13 ")

ऐप्पल ने इसे अन्य प्रमुख भाषा से अलग कर दिया। वर्तमान तरीका कॉल करना है:

test1.characters.count

हालांकि, सावधान रहना, जब आप लंबाई कहते हैं, तो आप बाइट्स की गिनती की संख्याओं की गणना नहीं करते, क्योंकि उन दोनों को अलग-अलग हो सकता है जब आप गैर-एस्की वर्णों का उपयोग करते हैं

उदाहरण के लिए; "你好啊hi".characters.count आपको 5 देगा लेकिन यह बाइट्स की गणना नहीं है। बाइट्स की वास्तविक संख्या प्राप्त करने के लिए, आपको "你好啊hi".lengthOfBytes(using: String.Encoding.utf8) । यह आपको 11 देगा।

अभी (स्विफ्ट 2.3 में) यदि आप उपयोग करते हैं:

 myString.characters.count 

विधि एक "दूरी" प्रकार लौटाएगी, अगर आपको एक पूर्णांक लौटने की विधि की आवश्यकता हो तो आपको इस प्रकार कास्ट डालना चाहिए:

 var count = myString.characters.count as Int 

यह है कि मैं क्या कर रहा हूं

 let replacementTextAsDecimal = Double(string) if string.characters.count > 0 && replacementTextAsDecimal == nil && replacementTextHasDecimalSeparator == nil { return false } 

तेज 3 के साथ स्विफ्ट 4 अपडेट की तुलना करें

स्विफ्ट 4 स्ट्रिंग पर वर्ण सरणी की आवश्यकता को हटाता है। इसका मतलब यह है कि आप स्ट्रिंग पर सीधे count कॉल कर सकते हैं बिना वर्ण सरणी पहले।

 "hello".count // 5 

जबकि तेज 3 में, आपको अक्षर सरणी मिलनी होगी और फिर उस सरणी में तत्व को गिनाना होगा। नोट करें कि यह निम्न विधि अभी भी स्विफ्ट 4.0 में उपलब्ध है क्योंकि आप दिए गए स्ट्रिंग के वर्ण सरणी तक पहुंचने के लिए अभी भी characters कॉल कर सकते हैं

 "hello".characters.count // 5 

स्विफ्ट 4.0 ने यूनिकोड 9 को भी गोद लिया और अब यह ग्रीफम समूहों को व्याख्या कर सकता है। उदाहरण के लिए, एक इमोजी पर भरोसेगी आपको 1 जब तेज 3.0 में देगी, आपको 1 से अधिक की संख्या मिल सकती है।

 "👍🏽".count // Swift 4.0 prints 1, Swift 3.0 prints 2 "👨‍❤️‍💋‍👨".count // Swift 4.0 prints 1, Swift 3.0 prints 4 

स्विफ्ट 4.0

 let flag = "🇵🇷" print(flag.count) // Prints "1" -- Counts the characters and emoji as length 1 print(flag.unicodeScalars.count) // Prints "2" -- Counts the unicode lenght ex. "A" is 65 print(flag.utf16.count) // Prints "4" print(flag.utf8.count) // Prints "8" 

तेज 3/4 के लिए मेरे दो सेंट

यदि आपको सशर्त रूप से संकलित करने की आवश्यकता है

  #if swift(>=4.0) let len = text.count #else let len = text.characters.count #endif 

स्विफ्ट 4

 let str = "Your name" str.count 

याद रखें: अंतरिक्ष को भी संख्या में गिना जाता है

यदि आप स्ट्रिंग चेकआउट की लंबाई प्राप्त करने के लिए क्लीनर की तलाश कर रहे हैं, तो इस लाइब्रेरी में एक्सटेंशन का विस्तार हुआ है जो कि स्विफ्ट के वर्गों में बनाया गया http://www.dollarswift.org/#length

इस पुस्तकालय का उपयोग करके आप "Some Str".length कर सकते हैं। "Some Str".length

एक्सकोड 6.4 , स्विफ्ट 1.2 और आईओएस 8.4 का उपयोग करना:

  //: Playground - noun: a place where people can play import UIKit var str = " He\u{2606} " count(str) // 7 let length = count(str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())) as Int // 3 println(length == 3) // true