0

私の要件は、単語のグループまたは単一の単語がより大きな文字列に存在するかどうかを確認することです。String.contains() メソッドを使用してみましたが、大きな文字列に改行文字がある場合、これは失敗します。現在、私はregex以下を使用しています。ただし、これは 1 つの単語に対してのみ機能します。検索されるテキストはユーザーが入力した値であり、複数の単語を含めることができます。これはアンドロイドアプリケーションです。

String regex = ".*.{0}" + searchText + ".{0}.*";
Pattern pattern = Pattern.compile(regex);
pattern.matcher(largerString).find();

Sample String
String largerString    ="John writes about this, and John writes about that," +
" and John writes about everything. ";

String searchText = "about this";
4

2 に答える 2

0

改行をスペースに置き換えて、その上ですべて小文字に変換してみませんか?

    String s = "hello";
    String originalString = "Does this contain \n Hello?";
    String formattedString = originalString.toLowerCase().replace("\n", " ");
    System.out.println(formattedString.contains(s));

編集:考えてみると、改行がどのように違いを生むのかよくわかりません...

編集2:私は正しかった。改行は関係ありません。

        String s = "hello";
        String originalString = "Does this contain \nHello?";
        String formattedString = originalString.toLowerCase();
        System.out.println(formattedString.contains(s));
于 2014-06-19T08:55:15.790 に答える
0

これは正規表現を使用しないコードです。

String largerString    = "John writes about this, and John writes about that," +" and John writes about everything. ";
String searchText = "about this";
Pattern pattern = Pattern.compile(searchText);
Matcher m = pattern.matcher(largerString);

if(m.find()){
System.out.println(m.group().toString());
}

結果:

about this

お役に立てば幸いです。

于 2014-06-19T09:08:22.593 に答える