检查字符串是否包含字符串[]中存在的任何值,而不使用regex-Java
我有一个字符串[],它的值需要在输入到EditText中的文本中查找。我知道如何使用正则表达式,但有没有一种方法可以不用正则表达式检查字符串是否包含字符串[]中存在的任何值,而不使用regex-Java,java,android,string,Java,Android,String,我有一个字符串[],它的值需要在输入到EditText中的文本中查找。我知道如何使用正则表达式,但有没有一种方法可以不用正则表达式 public static String[] knownCombinations = new String[] { "IV", "IX", "XL", "CD", "CM" }; 现在,如果我输入,MMMDCCIV,如何检查字符串是否具有字符串[]中的任何值?或者遍历字符串[]并检查输入的字符串中的每个值,这种方法足够好吗 例如: Stri
public static String[] knownCombinations = new String[] { "IV", "IX", "XL",
"CD", "CM" };
现在,如果我输入,MMMDCCIV
,如何检查字符串是否具有字符串[]中的任何值?或者遍历字符串[]并检查输入的字符串中的每个值,这种方法足够好吗
例如:
String input = "MMMDCCIV";
for(int i = 0; i < knownCombinations.length; i++) {
if(input.contains(knownCombinations[i])
return true;
else
return false;
}
String input=“MMMDCCIV”;
for(int i=0;i
或者有更好的方法吗?迭代数组是唯一的方法(尽管使用Java 8流编写的代码可能更少),但是循环中有一个错误。 只有在循环结束且未找到任何匹配项后才应返回false
for(int i = 0; i < knownCombinations.length; i++) {
if(input.contains(knownCombinations[i])
return true;
}
return false;
for(int i=0;i
假设输入字符串中至少要包含一个数组元素(而不是全部元素)。迭代数组是唯一的方法(尽管使用Java 8流编写的代码可能较少),但循环中存在错误。 只有在循环结束且未找到任何匹配项后才应返回false
for(int i = 0; i < knownCombinations.length; i++) {
if(input.contains(knownCombinations[i])
return true;
}
return false;
for(int i=0;i
这是假设您需要至少一个数组元素包含在输入字符串中(而不是全部)。在将
知识组合添加到集合后,您可以迭代输入字符串,而不是迭代数组:
Set<String> knownSet = new HashSet<String>(Arrays.asList(knownCombinations));
String input = "MMMDCCIV";
for (int i=0; i < input.length-1; ++i) { // iterate over each 2-letter
if (knownSet.contains(input.substring(i, i+2)) { // combination in the input
return true;
}
}
return false;
Set knownSet=newhashset(Arrays.asList(knownCombinations));
字符串输入=“MMMDCCIV”;
对于(int i=0;i
这本质上与@Eran的解决方案相反。我可能会同意他的方法,因为它更容易阅读,但我认为我的答案是一个很好的尝试,以不同的方式解决问题。在添加knownC之后,你可以迭代输入
字符串,而不是迭代数组将
组合到集合
:
Set<String> knownSet = new HashSet<String>(Arrays.asList(knownCombinations));
String input = "MMMDCCIV";
for (int i=0; i < input.length-1; ++i) { // iterate over each 2-letter
if (knownSet.contains(input.substring(i, i+2)) { // combination in the input
return true;
}
}
return false;
Set knownSet=newhashset(Arrays.asList(knownCombinations));
字符串输入=“MMMDCCIV”;
对于(int i=0;i
这本质上与@Eran的解决方案相反。我可能会赞同他的方法,因为它更容易阅读,但我认为我的答案是用不同的方式解决问题的一次很好的尝试。Regex在这里不是一个好的解决方案。你不想使用它是很好的:)问题到底是什么?“足够好了”是一个相对的术语…我的意思是,它可以用Java中的任何内置方法来完成。另一个答案就在你面前…等等…@TimBiegeleisen,正如你的指挥官:)正则表达式在这里不是一个好的解决方案。你不想使用它是好的:)到底是什么问题?“足够好了”是一个相对的术语…我的意思是,它可以用Java中的任何内置方法来实现。另一个答案是…等等…@TimBiegeleisen,就像你的指挥官:)因为,埃兰是第一个回答的,我接受了他的答案。我对你的答案投了赞成票。谢谢你的时间。感谢你。不用担心…很高兴回答你的问题。^^因为,埃兰是第一个回答的,我接受了他的答案。我对你的答案投了赞成票。谢谢你的时间。谢谢。不用担心…很高兴回答你的问题。^^