簡體   English   中英

如何檢查文本段落是否包含字符串數組中可用的單詞?

[英]How to check if a text paragraph contains words available in string array?

我有一個存儲在String變量和String數組中的文本段落,其中包含多個值,例如

String names[] = {"jack", "adam", "jerry adams", "Jon snow"};

如何檢查文本段落(存儲在String變量中)是否包含名稱數組中給定的值?

如果段落中存在數組中的任何字符串,Lonely Neuron方法將檢查並返回true。

為了檢查數組中的所有值(如注釋中提到的)是否都存在於段落中,需要進行此稍作修改。

public static boolean textContainsAny(String text, String[] names) {
    for (String name : names) {
        if (!text.contains(name)) {
            return false;
        }
    }
    return true;
}

這可能會稍微先進一點,但是:

String names[] = {"jack", "adam", "jerry adams", "Jon snow"};
String paragraph = "jack and jill went up the hill to meet jerry adams";
boolean onefound = Stream.of(names).anyMatch(paragraph::contains);
bollean allfound = Stream.of(names).allMatch(paragraph::contains);

您可以使用以下單線

boolean contained = Arrays.stream(names) .noneMatch(name -> !paragraph.contains(name));

請注意,這將是區分大小寫的匹配。 Jackjack

這應該可以解決問題:

public boolean textContainsAny(String text, String[] names) {
    for (String name : names) {
        if (text.contains(name)) {
            return true;
        }
    }
    return false;
}

隨着for (String name : names) ,我們遍歷所有值names ,所以我們可以檢查每name獨立。 然后,我們調用text.contains(name)來檢查是否包含該特定名稱。 如果包含任何名稱,它將立即返回true並且循環的其余部分不必執行。 如果我們測試了所有name s,它將返回false ,表示text沒有名稱。 我們在單獨的方法中執行此操作,因此代碼可重復使用。

然后可以這樣稱呼它:

public static void main(String[] args) {
    String text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore";
    String names = new String[]{"jack", "adam", "jerry adams", "Jon snow"};
    System.out.println("name is contained: " + textContainsAny(text, names));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM