2011-06-28 21 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

私はあなたのコードでこれをやってみたいことを前提としています。このAPIには、文字列配列全体に対してテキストマッチングを行うものは何もありません。あなたは配列内の位置を知りたいと思った場合は、マッチャーとパターンを使用することができ、またはあなたがインデックスを持つ配列を反復処理でき、もちろん

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

これはOPが望むことをしません。(掲載された例に基づいて)単語「ソフトウェア」を含むリストの要素を見つけることです。これは、 "ソフトウェア"という言葉に(全体として)等しい要素だけを見つけます。また、 'List.contains'は内部的にループを使います。あなた自身のコードでループを使うよりも速くはありません。さらに、 'String []'の周りに 'List'ラッパーを作成するオーバーヘッドがあります。 –

+0

カスタムオブジェクトリストの場合は動作しますか? – ralphgabb

関連する問題