我知道以前有人问过类似的问题,而且我昨天也问过这个问题,但是我仍然找不到问题的答案!
我正在比较数组并提取与 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 是姓名数组列表,例如:“Nataly Portman、Johnny Depp、John Doe、Jane Doe、Natasha、Sasha 等”。数组 xyz 也有名称(名称数据库,大约 300 个)。
如果用 ("") 分割适用于单字字符串,但不适用于双字字符串。例如,字符串“John”和“Doe”将被单独识别,但“John Doe”则不会。因此,尝试使用逗号、“-”、“.”,甚至双空格!没什么!
知道为什么吗?提前致谢!!!
最佳答案
我的假设是你有空格。 您的 nlp_text 可能如下所示:
“娜塔莉·波特曼、约翰尼·德普、约翰·多伊、简·多伊、娜塔莎、萨莎”
你的数组是这样的:
{“约翰尼·德普”、“约翰·多伊”、“简·多伊”、“娜塔莎”}
如果是,拆分后,final String[] abc
的某些元素中将会有空格。
如果是这种情况,请在 toLowerCase()
之后添加 trim()
:
a.toLowerCase().trim()
关于java - 在java中比较和提取2个数组中的相似字符串,不比较双字字符串,.split (",")返回空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61372890/