जब से तुम केवल में रुचि रखते हैं किसी भी मिलान मूल्य, आप उपयोग कर सकते हैं पहले मिलान शब्दकोश प्रविष्टि को खोजने के लिए indexOf()
विधि। यह काम करता है क्योंकि एक शब्दकोश कुंजी/मूल्य जोड़े का संग्रह है।
स्विफ्ट 2:
let dict = ["foo": "bar", "PQRS": "baz"]
let searchTerm = "S"
if let index = dict.indexOf({ (key, _) in key.containsString(searchTerm) }) {
let value = dict[index].1
print(value)
} else {
print("no match")
}
जैसे ही मिलान कुंजी पाया जाता है, विधेय रिटर्न true
और गणन बंद हो जाता है। index
एक "शब्दकोश सूचकांक" है जो को सीधे शब्दकोश प्रविष्टि प्राप्त करने के लिए उपयोग किया जा सकता है।
if let entry = dict.first(where: { (key, _) in key.contains(searchTerm) }) {
print(entry.value)
} else {
print("no match")
}
:
एक केस-संवेदी कुंजी खोज के लिए, में स्विफ्ट 3 आप first(where:)
उपयोग कर सकते हैं पहले मिलान तत्व को खोजने के लिए, यह एक शब्दकोश देखने की बचत होती है द्वारा
{
(key, _) in key.rangeOfString(searchTerm, options: .CaseInsensitiveSearch) != nil
}
विधेय की जगह
केस-असंवेदनशील कुंजी खोज के लिए,
द्वारा अनुमान को प्रतिस्थापित करें
स्रोत
2016-07-31 12:56:39
अगर मुझे केस असंवेदनशीलता की आवश्यकता नहीं है क्योंकि मुझे पता है कि तार सभी कैप्स हैं, तो क्या मैं key.range() की बजाय key.contains() का उपयोग कर सकता हूं या key.range() तेज है? – Adeline
@ एडलाइन: मुझे नहीं लगता कि इससे कोई फर्क पड़ता है, लेकिन 'key.contains()' सरल है, इसलिए मैं इसका उपयोग करूंगा। –
सभी तीन उत्तरों मान्य हैं, लेकिन उनका सबसे तेज़ है। – Adeline