कैसे जांच करें कि एक स्ट्रिंग स्विफ्ट (उपसर्ग) से शुरू होती है या स्विफ्ट में (प्रत्यय) के साथ समाप्त होती है


102

मैं यह जांचने की कोशिश कर रहा हूं कि क्या स्विफ्ट स्ट्रिंग एक निश्चित मूल्य के साथ शुरू या समाप्त होती है। ये विधियाँ मौजूद नहीं हैं:

var str = "Hello, playground"
str.startsWith("Hello") // error
str.endsWith("ground") // error

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

वहाँ यह करने के लिए एक आसान तरीका है?

(जब मैं दस्तावेज़ीकरण पढ़ रहा था, तब मैं पूरे उत्तर में लड़खड़ा गया था , और जब से एक एसओ उत्तर मेरी खोज की शर्तों के लिए नहीं आया था, मैं यहाँ अपना प्रश्नोत्तर जोड़ रहा हूँ।)

जवाबों:


204

स्विफ्ट 4 के लिए अपडेट किया गया

यह जाँचना कि एक स्ट्रिंग किसके साथ शुरू और समाप्त होती है

आप एक और स्ट्रिंग के साथ समानता का परीक्षण करने के लिए hasPrefix(_:)और hasSuffix(_:)तरीकों का उपयोग कर सकते हैं ।

let str = "Hello, playground"

if str.hasPrefix("Hello") { // true
    print("Prefix exists")
}

if str.hasSuffix("ground") { // true
    print("Suffix exists")
}

वास्तविक उपसर्ग और प्रत्यय Substrings प्राप्त करना

वास्तविक उपसर्ग या प्रत्यय विकल्प प्राप्त करने के लिए, आप निम्न विधियों में से किसी एक का उपयोग कर सकते हैं। मैं इसकी सरलता के लिए पहली विधि सुझाता हूं। सभी तरीकों के strरूप में उपयोग करें

let str = "Hello, playground"

विधि 1: (अनुशंसित) prefix(Int)औरsuffix(Int)

let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground

मेरी राय में यह बेहतर तरीका है। नीचे दिए गए तरीकों 2 और 3 के विपरीत, यह विधि दुर्घटनाग्रस्त नहीं होगी यदि इंडेक्स सीमा से बाहर जाते हैं। यह स्ट्रिंग में सभी वर्ण वापस कर देगा।

let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground

बेशक, कभी-कभी क्रैश अच्छा होता है क्योंकि वे आपको बताते हैं कि आपके कोड में कोई समस्या है। तो नीचे दिए गए दूसरे तरीके पर भी विचार करें। यदि सूचकांक सीमा से बाहर चला जाता है तो यह एक त्रुटि फेंक देगा।

विधि 2: prefix(upto:)औरsuffix(from:)

स्विफ्ट स्ट्रिंग इंडेक्स पेचीदा होते हैं क्योंकि उन्हें विशेष पात्रों (जैसे इमोजी) को ध्यान में रखना होता है। हालांकि एक बार जब आप सूचकांक प्राप्त कर लेते हैं तो उपसर्ग या प्रत्यय प्राप्त करना आसान होता है। (देखें मेरे दूसरे जवाब पर String.Index।)

let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground

यदि आप सीमा से बाहर जाने से बचना चाहते हैं, तो आप limitedBy(फिर से, इस उत्तर को देखें ) का उपयोग करके एक सूचकांक बना सकते हैं ।

विधि 3: सदस्यताएँ

चूंकि स्ट्रिंग एक संग्रह है, आप उपसर्ग और प्रत्यय प्राप्त करने के लिए सदस्यता का उपयोग कर सकते हैं।

let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground

आगे की पढाई


5

उपसर्ग और प्रत्यय समानता

यह जांचने के लिए कि क्या किसी स्ट्रिंग में एक विशेष स्ट्रिंग उपसर्ग या प्रत्यय है, स्ट्रिंग के hasPrefix ( :) और hasSuffix ( :) विधियों, दोनों को कॉल करें, जो स्ट्रिंग के एक ही तर्क को लेते हैं और एक बूलियन मान लौटाते हैं।

Apple डॉक्टर

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