文字列配列をループせずにサブストリングが含まれているかどうかをチェック

user5155835:

私は、ループを使用せずに、文字列の配列に部分文字列を検索します。私が使用しています:

import java.util.Arrays;

public class MyClass {
    public static void main(String args[]) {

        String[] files = new String[]{"Audit_20190204_061439.csv","anotherFile"};
        String substring= ".csv";

        if(!Arrays.stream(files).anyMatch(substring::contains)) {
            System.out.println("Not found:" + substring);
        }
    }
}

私はいつも見つかりません取得しています。アプローチと間違っては何ですか?

彼らは次のとおりでした:

あなたはかどうかをチェックされているString「.CSV」があなたの要素のいずれかが含まれていませんStreamあなたが何を望むかの反対です。

そのはず:

if (!Arrays.stream(files).anyMatch(s -> s.contains(substring))) {
    System.out.println("Not found:" + substring);
}

PSとしては、あなたが使用することができ、コメントnoneMatchの代わりに、anyMatch条件を否定する必要が保存されますこれは、:

if (Arrays.stream(files).noneMatch(s -> s.contains(substring))) {
    System.out.println("Not found:" + substring);
}

「.CSV」ストリングのみの終わりで検索する必要がある場合String(接尾辞として扱わすなわち)、あなたが使用する必要がありますendsWith代わりにcontains

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=225402&siteId=1