2011-06-28 15 views
6

स्ट्रिंग-सरणी आइटम तत्व के अंदर किसी विशिष्ट टेक्स्ट को कैसे खोजें? निम्नलिखित xml फ़ाइल का एक उदाहरण है। स्ट्रिंग-सरणी नाम एंड्रॉइड है। मेरे पास स्ट्रिंग-सरणी के अंदर कुछ आइटम हैं। अब मैं "सॉफ्टवेयर" शब्द की खोज करना चाहता हूं। कृपया मुझे बताएं कि यह कैसे करें?स्ट्रिंग-ऐरे आइटम तत्व में स्ट्रिंग के लिए खोज

<?xml version="1.0" encoding="utf-8"?><resources> 
<string-array name="android"> 
    <item>Android is a software stack for mobile devices that includes an operating system, middleware and key applications.</item> 
    <item>Google Inc. purchased the initial developer of the software, Android Inc., in 2005..</item> 
</string-array> 

उत्तर

18

मुझे लगता है कि आप कोड में ऐसा करना चाहते हैं। एपीआई में एक संपूर्ण स्ट्रिंग सरणी पर टेक्स्ट मिलान करने के लिए कुछ भी नहीं है; यदि आप एक Matcher और पैटर्न इस्तेमाल कर सकते हैं, या आप एक सूचकांक के साथ सरणी के माध्यम से पुनरावृति सकता है अगर आप की सरणी में स्थिति जानना चाहता था

String[] androidStrings = getResources().getStringArray(R.array.android); 
for (String s : androidStrings) { 
    int i = s.indexOf("software"); 
    if (i >= 0) { 
     // found a match to "software" at offset i 
    } 
} 
बेशक

,: आप इसे एक समय में एक तत्व क्या करने की जरूरत एक खेल। लेकिन यह सामान्य दृष्टिकोण है।

19

इस विधि बेहतर प्रदर्शन किया है:

String[] androidStrings = getResources().getStringArray(R.array.android); 
if (Arrays.asList(androidStrings).contains("software") { 
    // found a match to "software"   
} 

Arrays.asList().contains() एक for पाश का उपयोग कर की तुलना में तेजी है।

+11

यह ओपी चाहता है जो नहीं करेगा, जो (पोस्ट किए गए उदाहरणों के आधार पर) सूची के तत्वों को ढूंढना है जो शब्द "सॉफ़्टवेयर" हैं। यह केवल उन तत्वों को मिलेगा जो _equal_ (पूरी तरह से) शब्द "सॉफ़्टवेयर" में हैं। साथ ही, 'List.contains' आंतरिक रूप से एक लूप का उपयोग करता है; यह आपके कोड में लूप का उपयोग करने से तेज़ नहीं है। इसके अलावा आपके पास 'स्ट्रिंग [] 'के आस-पास' सूची 'रैपर बनाने का अतिरिक्त ओवरहेड है। –

+0

क्या यह कस्टम ऑब्जेक्ट सूची के लिए काम करेगा? – ralphgabb

संबंधित मुद्दे