Сравнение и извлечение похожих строк из 2-х массивов в java, строки из двух слов не сравниваются, .split (",") возвращает пустое значение - PullRequest
0 голосов
/ 22 апреля 2020

Я знаю, что подобный вопрос задавался ранее, и я задавал его вчера, однако все еще не могу найти ответ на свою проблему!

Я сравниваю массивы и извлекаю сходства с помощью HashSet.

final String[] abc = nlp_text.split(",");
final String[] xyz = getResources().getStringArray(R.array.xyz);

final HashSet<String> set = new HashSet<>();
for(String a : abc) set.add(a.toLowerCase());
final HashSet<String> set1 = new HashSet<>();
for(String a : xyz) set1.add(a.toLowerCase());
set.retainAll(set1);
String[] pqr= {};
pqr = set.toArray(pqr);

Это возвращает пустое! Хотя есть похожие строки, разделенные запятой! nlp_text - это список имен массивов, например: «Натали Портман, Джонни Депп, Джон Доу, Джейн Доу, Наташа, Саша, ... et c». Массив xyz также имена (база данных имен, около 300).

Если разделить на (""), работает на строки из одного слова, но не работает на строки из двух слов. Например, строки «Джон» и «Доу» будут распознаваться отдельно, а «Джон Доу» - нет. Таким образом, пробовал с запятой, "-", ".", Даже двойной пробел! Ничего!

Есть идеи, почему? заранее спасибо !!!

1 Ответ

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

Я предполагаю, что у вас есть пробелы. Ваш nlp_text, вероятно, выглядит так:

"Nataly Portman, Johnny Depp, John Doe, Jane Doe, Natasha, Sasha"

, а ваш массив выглядит примерно так:

{ "Johnny Depp", "John Doe", "Jane Doe", "Natasha" }

Если да, после разделения у вас будут пробелы в некоторых элементах final String[] abc.

Если это так, добавьте trim() после toLowerCase():

a.toLowerCase().trim()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...