Проверьте, содержит ли строка какое-либо слово из заданного списка - PullRequest
0 голосов
/ 25 апреля 2020

Проверьте, содержит ли строка любое из слов из данного списка строк. Вот что я сделал до сих пор:

private void text_type(){
 String input_data = kw_url_holder.getText().toString();
    String[] words = {"google", "bing"};
 if(URLUtil.isValidUrl(input_data) & input_data.contains("google")){
     Toast.makeText(YTTags.this, "It's URL",Toast.LENGTH_LONG).show();
 }
 else{
     Toast.makeText(YTTags.this, "It's Word",Toast.LENGTH_LONG).show();
 }
}

Этот код проверяет, является ли String Word или URL. В URL я хочу проверить, содержит ли URL список слов. Я использовал mydata.contains (), но он проверяет только одно слово.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Используя Regex, будет работать на всех android версиях, развивающихся в (java 7/8): -

1 - преобразовать ваш массив sting в список (или лучше, если вы начнете с List, массивы являются неизменяемыми):

List<String> list = Arrays.asList(words);

2 - определите свой метод сопоставления строк:

public static boolean isWordFoundInList (String wordToMatch, List<String> list) {
    // convert list to delimited string
    String wordsToMatchDelimited = String.join("|", list);
    return Pattern.compile(wordsToMatchDelimited, Pattern.CASE_INSENSITIVE)
               .matcher(wordToMatch)
               .find();
}

Вы можете проверить его в онлайн-компиляторе java здесь: Компилировать и выполнять Java Онлайн

0 голосов
/ 25 апреля 2020

Вы можете использовать это:

@RequiresApi(api = Build.VERSION_CODES.N)
public static boolean containsArray(String input_data, String[] words) {
    return Arrays.stream(words).anyMatch(input_data::contains);
}

и ваше условие if

if(URLUtil.isValidUrl(input_data) & containsArray(input_data, words)){
    Toast.makeText(YTTags.this, "It's URL",Toast.LENGTH_LONG).show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...