我是Java的新手,我遇到了问题而且我似乎无法找到答案。 我试图找出我传递的语言是否存在于我的列表中。
String lang = "fr, de, gb, nl, se, es";
List<String> result = new ArrayList<String>();
String[] languages = lang.split(",");
result = Arrays.asList(languages);
if (result.contains("de")) {
return true;
} else {
System.exit(0);
}
这会返回false,我无法理解原因。
答案 0 :(得分:4)
您只是在分割逗号,因此您的数组包含前面有空格的字符串。使用此正则表达式来分割:
lang.split("\\s*,\\s*")
另一方面,您不需要这三行:
List<String> result = new ArrayList<String>();
String[] languages = lang.split(...);
result = Arrays.asList(languages);
你需要的只是
List<String> result = Arrays.asList(lang.split(...));
答案 1 :(得分:2)
那是因为数组语言&#34;包含{&#34; fr&#34;,&#34;德&#34;&#34; GB&#34;&#34; NL&#34;&#34; SE&#34;&#34; ES&#34;} 它包含&#34;德&#34;不是&#34; de&#34;。 你可以用两种不同的方式纠正它, 1:使用&#34;分割语言&#34; (语法可能不同)。 2:比较包括空格在内的正确字符串。
答案 2 :(得分:1)
你得到分割的空格,我会使用\\s+
分割,这将为你删除空格。
String lang = "fr, de, gb, nl, se, es";
String[] languages = lang.split(",\\s+");
List<String> result = Arrays.asList(languages);
if (result.contains("de")) {
System.out.println("Result contains de");
} else {
System.out.println("Result does not contain de");
}
输出
Result contains de
答案 3 :(得分:0)
"fr, de, gb, nl, se, es"
您正在检查de
而不是<space>de
。
答案 4 :(得分:0)
你的字符串用“,”分隔。 所以如果你这样做:
if (result.contains(" de")
它会起作用。
答案 5 :(得分:0)
在“,”之后拆分lang字符串,或删除初始化
中的空格答案 6 :(得分:-2)
像这样更改你的字符串
String lang = "fr,de,gb,nl,se,es";
或改变@TheLostMoind说