Java 检查字符串是否包含任何给定的字符序列
我有一个字符串数组,我想检查数组的各个子部分是否包含CharSequence中的任何给定字符,而不是所有字符 比如说Java 检查字符串是否包含任何给定的字符序列,java,Java,我有一个字符串数组,我想检查数组的各个子部分是否包含CharSequence中的任何给定字符,而不是所有字符 比如说 CharSequence obj = "12"; //convert section to string String s = Arrays.asList(arr[1]).subList(0,2).toString(); if (s.contains(obj)) { System.out.print("yes"); } 仅当在s中同时找到1和2时,才会打印出yes,但我
CharSequence obj = "12";
//convert section to string
String s = Arrays.asList(arr[1]).subList(0,2).toString();
if (s.contains(obj))
{
System.out.print("yes");
}
仅当在s
中同时找到1和2时,才会打印出yes
,但我想检查是否有1或2?CharSequence obj=“12”;
CharSequence obj = "12";
//convert section to string
String s = Arrays.asList(arr[1]).subList(0,2).toString();
for(int i = 0;i<obj.lenth();i++){
if (s.indexof(obj.charAt(i)) != -1)
{
System.out.print("yes");
}
}
//将节转换为字符串
字符串s=Arrays.asList(arr[1]).subList(0,2).toString();
对于(int i=0;i使用正则表达式中的字符:
CharSequence obj = "12";
String s = Arrays.asList(arr[1]).subList(0,2).toString();
if (s.matches(".*[" + obj + "].*")) {
// either "1" or "2" is in s
}
仅供参考,在java中,matches()
必须匹配整个字符串才能返回true
-这就是为什么*
位于正则表达式的两端。我相信您的问题的解决方案与这里所问的类似:
这个问题提供了一些有趣的解决方案:1)您可以使用indexOf,或者2)您可以测试您要查找的内容不在数组中的条件。考虑下面显示的方法containsAny
public class InTest {
public static boolean containsAny(String strToSearch, CharSequence chars) {
for (int i=0;i<chars.length(); i++) {
if (strToSearch.indexOf(chars.charAt(i)) >= 0) {
return true;
}
}
return false;
}
public static void main(String[] args) {
System.out.println(containsAny(args[0],args[1]));
}
}
你就不能:
boolean found = false;
for(int i = 0, i < obj.length() && !found; i++)
{
if(s.contains(obj.subSequence(i, i + 1)))
{
found = true;
}
}
if(found)
{
System.out.print("yes");
}
boolean-found=false;
对于(int i=0,i
这一点很清楚。很明显,我想避免循环,但无论如何谢谢你好,伙计,是的,我可以做,但是我必须循环并检查很多次,所以我想避免循环。请注意,由于正则表达式中需要解析,因此这很慢。在性能很重要的情况下,您希望使用indexOf@javadba,“性能问题”可以忽略不计(几微秒)。简单、可读、简短的代码比冗长、复杂但快速的代码更可取,除非你能证明有一个性能问题fixing@Bohemian随你便-今年早些时候,我通过更加小心地处理字符串操作项,将一个重要的高容量应用程序的运行时间减少了75%,首先要做的是split()和Pattern等任何需要正式解析器的东西。
boolean found = false;
for(int i = 0, i < obj.length() && !found; i++)
{
if(s.contains(obj.subSequence(i, i + 1)))
{
found = true;
}
}
if(found)
{
System.out.print("yes");
}