-3

1 つ質問がありますが、これを解決できません。

  public static  void main(String [] arg) {    
         String description = "This time only $FB is highest priority";
         List<String> list = new ArrayList<String>();
         list.add("$FB");
         list.add("$F");
         for(String s : list) {
           if(description.contains(s)) {
              System.out.println(s);
           } 
         }
}

私が得ている出力は $FB と $F ですが、このダミー文字列にはリストの文字列が 1 つしか含まれていません。完全一致のみを与える他の方法はありますか?

4

4 に答える 4

8

正規表現を使用して、文字列に単語が含まれているかどうかを確認できます。

if (description.matches(".*\\b"+Pattern.quote(s)+"\\b.*")) {
    ...
}

アンカー\bは単語境界に一致します。

于 2013-08-07T15:38:34.927 に答える
8

単語が含まれているかどうかを確認したいようです。あなたはこれを行うことができます:

Set<String> words = new HashSet<String>(Arrays.asList(description.split(" ")));

...
words.contains(s)
...
于 2013-08-07T15:36:41.560 に答える
0

これは別の解決策であり、最良またはより効率的ではないかもしれませんが、機能し、このライブラリの力を示しています。そのため、lambdaj (ここからダウンロード- Web サイト) と hamcrest (ここからダウンロード- Webサイト) を使用できます。これらのライブラリは、コレクションを管理するのに非常に強力です。次のコードは非常にシンプルで、完全に機能します。

import static ch.lambdaj.Lambda.having;
import static ch.lambdaj.Lambda.on;
import static ch.lambdaj.Lambda.select;
import static org.hamcrest.Matchers.stringContainsInOrder;

import java.util.Arrays;
import java.util.List;

public class StringContains_03{
        public static void main(String[] args) {
            List<String> source =  Arrays.asList("This time only $FB,$RUG is highest priority".split(" "));
            List<String> patterns = Arrays.asList("$FB","$F");

            boolean patternsExistsInSource = select(source, having(on(String.class), stringContainsInOrder(patterns))).size()>0;
            System.out.println(patternsExistsInSource);//shows: true
            System.out.println(select(source, having(on(String.class), stringContainsInOrder(patterns))));//shows the matches: [$FB,$RUG]
    }
}

パターンが別のものにあるかどうかは、この行だけでわかることに注意してください。

 boolean patternsExistsInSource = select(source, having(on(String.class), stringContainsInOrder(patterns))).size()>0;

このライブラリを使用すると、問題を 1 行で解決できます。プロジェクトにhamcrest-all-1.3.jarおよびlambdaj-2.4.jarを追加する必要があります。

:これは、コードに代わるものがあると仮定するのに役立ちます。これが役立つことを願っています。

(編集済み) "今回は $FB,$RUG のみが最優先"の場合にも機能するようになりました。

于 2013-08-07T20:11:11.090 に答える