java - 在java中比较和提取2个数组中的相似字符串,不比较双字字符串,.split (",")返回空白

标签 java arrays string split

我知道以前有人问过类似的问题,而且我昨天也问过这个问题,但是我仍然找不到问题的答案!

我正在比较数组并提取与 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/

相关文章:

arrays - 如何使用 ksh93 从数组中的元素中提取项目?

c - 结构中的字节顺序

java - 字节数组到字符串给出 "???"

c - strcpy 的替代品?或者修复程序中的strcpy?

java - 无法解析符号 'ImageReference'

java - Java 中 RUBY 的等价物 has_many 和 belongs_to 关系

java - java中生成随机数的switch语句: not working

java - 为什么 Class.forName() 对我不起作用?

java - Vector 和 ArrayDeque 类

python - 删除pandas中重复的汉字