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


781

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

var test1: String = "Scott"

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



मुझे स्विफ्ट 3 की वजह से मैन्युअल रूप से बहुत सारे कोड माइग्रेट करने पड़े। इसलिए मैंने एक्सटेंशन बनाने का फैसला किया। तो अब, अगर एक नई प्रमुख रिलीज के लिए अपग्रेड करना है, तो मुझे केवल एक्सटेंशन को माइग्रेट करना होगा। यहां आप कुछ स्विफ्ट 3 एक्सटेंशन पा सकते हैं जो मैंने बनाए हैं। github.com/tukur187/Swift3
शकेलज़ेन 12

जवाबों:


1284

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

यह सिर्फ है:

test1.count

कारणों से।

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

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

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

test1.characters.count

(सिर के लिए JohnDifool के लिए धन्यवाद)

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

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

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

Apple स्विफ्ट गाइड से सही है

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

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

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

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


11
दिलचस्प है कि countElements एक वैश्विक कार्य है। क्या वैश्विक कार्यों की सूची है?
स्कॉट वाल्टर

7
CountElements के साथ परेशानी यह है कि इसे इस तरह घोषित किया जाता है: func countElements <T> (x: T) -> T.IndexType.DistanceType और वापसी प्रकार + ऑपरेशन को स्वीकार नहीं करता है।
MarkAurelius

288
यह एक str.length विधि को जोड़ने के लिए बहुत मुश्किल था। (गुस्से में अपनी मुट्ठी उठाता है)
बॉटबोट

13
स्विफ्ट 2 के साथ, मैं केवल यह काम कर सकता हूं: चलो len = test1.characters.count
लॉरेंट

7
ध्यान दें कि स्विफ्ट 4 के साथ, यह होगा string.count
मार्टिन आर

335

TLDR:

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

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

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

test1.characters.count

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

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

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

लेकिन, जैसा कि नीचे वर्णित है, दिए गए मान बुला के समान होने की गारंटी नहीं है countपर characters

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

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

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

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

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

26
मैं आपके विस्तृत और सावधानीपूर्वक उत्तर की सराहना करता हूं, लेकिन मुझे मानना ​​होगा कि यह मुझे असहज कर रहा है। आपने मुझे एक स्ट्रिंग की लंबाई प्राप्त करने के लिए 3 तरीके दिए हैं, सभी इस अस्वीकरण के साथ हैं कि वे जो उत्तर देते हैं वह वह नहीं हो सकता है जो आप अपेक्षा करते हैं। क्या वास्तव में एक स्ट्रिंग का एक सटीक, विश्वसनीय लंबाई मूल्य प्राप्त करने के लिए स्विफ्ट में निर्मित कोई विश्वसनीय तरीका नहीं है?
n00neimp0rtant

6
@ n00neimp0rtant। क्षमा करें यदि मैंने स्पष्ट नहीं किया। पहला समाधान ( countElements()) स्ट्रिंग में वर्णों की सटीक संख्या प्राप्त करता है। यह [str length]ऑब्जेक्ट-सी में कॉल करने से आपको अलग होगा , क्योंकि lengthविधि मानती है कि स्ट्रिंग के सभी वर्ण 16-बिट कोड इकाइयों से बने होते हैं, जबकि countElements()यूनिकोड वर्णों की वास्तविक संख्या प्राप्त होती है। हालांकि, ऊपर दिए गए विकल्पों में से अधिकांश उसी समय वापस आएंगे, खासकर यदि आप अंग्रेजी भाषा के सामान्य पात्रों के साथ काम कर रहे हों।
Cezar

2
@ n00neimp0rtant मैंने कोशिश करने और इसे और अधिक स्पष्ट करने के लिए अपने जवाब को थोड़ा छोटा किया।
Cezar

2
मैं देख सकता हूं कि तुम्हरा अब क्या मतलब है। मैंने सिर्फ एक स्ट्रिंग की लंबाई प्राप्त करने की कोशिश की जिसमें एक एकल इमोजी चरित्र है; ऑब्जेक्टिव-सी ने मुझे 4 का मान दिया, और स्विफ्ट ने मुझे 1. का मान दिया। तो यह वास्तव में अधिक सटीक लगता है (और, विडंबना यह है कि "मैं क्या उम्मीद नहीं करूंगा" = पी)। स्पष्टीकरण के लिए धन्यवाद!
n00neimp0rtant

1
@ n00neimp0rtant बिल्कुल! यह एक आदर्श उदाहरण है। मैं इसे उत्तर में भी जोड़ दूंगा
सीज़ेर

92

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

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

Let strLength = string.characters.count

स्विफ्ट 4.2 (4.0 आगे): [Apple प्रलेखन - स्ट्रिंग्स]

Let strLength = string.count


61

स्विफ्ट 1.1

extension String {
    var length: Int { return countElements(self) }  // 
}

स्विफ्ट 1.2

extension String {
    var length: Int { return count(self)         }  // 
}

स्विफ्ट 2.0

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

स्विफ्ट 4.2

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

let str = "Hello"
let count = str.length    // returns 5 (Int)

6
हां, हमें स्विफ्ट के सिंटैक्स के लिए एक अमूर्त परत की आवश्यकता है जो मासिक आधार पर बदल रही है!
कॉसमैन

@ यह तेजी से काम नहीं करता है 4. के रूप में पात्रों पदावनत है। चारों ओर whac-a-तिल जारी है। विलाप
नवोदित

48

स्विफ्ट 4

"string".count

;)

स्विफ्ट 3

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

प्रयोग

"string".length


यह String.CharacterView.IndexDistance देता है। Int के बारे में क्या?
नवोदित

@GitSync कहाँ? मैं आपको समझ नहीं पा रहा हूँ
व्याचेस्लाव

@Vyacheslav in स्विफ्ट 4 "स्ट्रिंग"। क्राउड रिटर्न String.CharacterView.IndexDistance मेरा जवाब यहां देखें: stackoverflow.com/a/47203597/5389500 स्विफ्ट 3 और 4 में int पाने के लिए
Eonist

मैंने परीक्षण किया है कि यह खेल का मैदान है:
व्याचेस्लाव

//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground" print(type(of: str.characters.count)) print(type(of: str.count))
व्याचेस्लाव

25

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

myString.isEmpty

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

NSString खाली है


18

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

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

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

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

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

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

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

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

15

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

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

14

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

aString.utf16count

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


2
देखें सीजर का जवाब। यह जरूरी नहीं कि आपको "वर्ण" की अधिकांश लोगों की परिभाषा के लिए, स्ट्रिंग में "वर्ण" की संख्या देगा। तब फिर से, न तो उद्देश्य-सी - यह आप पर निर्भर है कि आप परवाह करते हैं या नहीं।
jbg

12

स्विफ्ट 5.1, 5

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"

11

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

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

या

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

जब आप इमोजी के साथ जटिल तारों का उपयोग कर रहे हैं, तो इसका उत्तर utf16countगलत होगा
विक्टर सिगलर

10

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

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

1
क्या यह .ff16count से धीमा है?
samir105 6

1
यह .utf16count के समान गति, गिनती से अधिक तेज (स्ट्रिंग) लगता है
samir105

8

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

let str = "🐶"
  1. यदि आप दृश्य वर्णों की संख्या चाहते हैं:

    str.characters.count
  2. यदि आप "स्ट्रिंग के UTF-16 प्रतिनिधित्व के भीतर 16-बिट कोड इकाइयाँ चाहते हैं":

    str.utf16.count

अधिकांश समय, 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🐶🐶🐶

7

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

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

4
यह वही हैtest1.utf16count
सुल्तान

1
@vladof अच्छी तरह से, यह "तरह" काम करता है। देखें सीजर का जवाब।
jbg

6

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

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

२४ देता है


5

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

UITextView में कुछ संख्या (उदाहरण के लिए 150) से वर्ण गणना दिखाने के लिए यह कितना उपयोगी होगा, इसका मजेदार उदाहरण:

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

4

स्विफ्ट 4 में मैंने हमेशा string.countआज तक उपयोग किया है जो मैंने पाया है

string.endIndex.encodedOffset

बेहतर प्रतिस्थापन है क्योंकि यह तेज है - 50 000 वर्णों के लिए स्ट्रिंग 6 बार की तुलना में तेज है .count.countस्ट्रिंग की लंबाई पर निर्भर करता है लेकिन .endIndex.encodedOffsetऐसा नहीं करता।

लेकिन एक नहीं है। यह इमोजीस के साथ तार के लिए अच्छा नहीं है, यह गलत परिणाम देगा, इसलिए केवल .countसही है।


3

में स्विफ्ट 4 : को शामिल नहीं करता है स्ट्रिंग यूनिकोड वर्ण तो निम्न का उपयोग

let str : String = "abcd"
let count = str.count // output 4

यदि स्ट्रिंग में यूनिकोड वर्ण हैं तो निम्नलिखित का उपयोग करें:

let spain = "España"
let count1 = spain.count // output 6
let count2 = spain.utf8.count // output 7

आप क्यों इस्तेमाल करना चाहेंगे utf8.count? यह वर्णों की गिनती नहीं देता है। यह स्ट्रिंग के UTF-8 एन्कोडिंग के लिए आवश्यक बाइट्स की संख्या देता है।
21

2

Xcode में 6.1.1

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

मुझे लगता है कि ब्रेनियाक्स हर मामूली संस्करण पर इसे बदल देगा।


2

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

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

स्ट्रिंग में वर्णों की गिनती ज्ञात करें:

let numberOfChars = textlength.characters.count

2

यहाँ है कि मैं क्या कर समाप्त हो गया

let replacementTextAsDecimal = Double(string)

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

मुझे लगता है कि आप केवल स्ट्रिंग की लंबाई प्राप्त करने की तुलना में अधिक करने की कोशिश कर रहे हैं, और किसी भी मामले में यह अधूरा दिखता है (एक return trueमामला नहीं होना चाहिए ?)। क्या आप कृपया अपना उत्तर संपादित कर सकते हैं और मामले में दोहरी जांच कर सकते हैं ? धन्यवाद!
फैबियो का कहना है कि

2

स्विफ्ट 4 की तुलना स्विफ्ट 3 से की जा रही है

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

"hello".count                  // 5

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

"hello".characters.count       // 5

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

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

2

स्विफ्ट 4

let str =  "Your name"

str.count 

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


2

आप विस्तार लिखकर बस लंबाई प्राप्त कर सकते हैं:

extension String {
    // MARK: Use if it's Swift 2
    func stringLength(str: String) -> Int {
        return str.characters.count
    }

    // MARK: Use if it's Swift 3
    func stringLength(_ str: String) -> Int {
        return str.characters.count
    }

    // MARK: Use if it's Swift 4
    func stringLength(_ str: String) -> Int {
        return str.count
    }
}

1
var str = "Hello, playground"
var newString = str as NSString    

countElements(str)

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

countElements((newString as String))    

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


1

स्विफ्ट में स्ट्रिंग की गणना करने का सबसे अच्छा तरीका यह है:

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

2
आपको बस गिनती (str) का उपयोग करना चाहिए। उप स्ट्रिंग अग्रिम () के साथ tu उपयोग गणना (str.utf16) आज़माएं
लियो डबस

1

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

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

1
test1.characters.count

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

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

test1 = "StackOverflow"

print(test1.characters.count)

( प्रिंट " 13 ")


1

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

test1.characters.count

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

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


1

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

myString.characters.count 

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

var count = myString.characters.count as Int

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