我有一个String数组,我想检查数组的各个子部分是否包含任何,而不是CharSequence中给定字符的 all
例如
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");
}
只有在yes
中找到1和2时才打印s
,但我想检查1或2是否在那里?
答案 0 :(得分:1)
在正则表达式中使用你的字符:
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 :(得分:0)
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");
}
}
答案 2 :(得分:0)
我相信您问题的解决方案与此处提出的问题类似:In Java, how can I determine if a char array contains a particular character?
这个问题提供了一些有趣的解决方案:1)你可以使用indexOf,或2)你可以测试你在数组中查找ISN&#T;的条件。
答案 3 :(得分:0)
考虑下面显示的方法 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]));
}
}
尝试一下:
C:\apps\simpleakka>javac InTest.java
C:\apps\simpleakka>java InTest "abcdefghij" "i"
true
C:\apps\simpleakka>java InTest "abcdefghij" "n"
false
答案 4 :(得分:0)
你能不能:
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");
}