2015-06-16 107 views
-1

我想检查字符串“ABCD”是否包含Java中的“DC”字符串。但是这不是一个子字符串的例子,因为每次我的字符串和检查字符都会改变。我将检查字符存储到数组中,所以子字符串失败,它只有在我有CD或BC时才有效。因为每次我从数组中调用字符时都无法匹配。所以我应该怎么做任何建议如何检查字符串是否包含Java中的某些字符?

+6

你可以显示你现在的代码吗? – farid99

+1

显示一些示例代码。描述哪些案例,确切地说,你想匹配哪些案件会失败。 – markspace

+0

“ABCD”是否包含“AD”? – Mshnik

回答

0

我使用这种方法为charbyte阵列。在得到sub匹配的src阵列的索引之后,您就可以将其存储在任何需要的位置。 试试这个:

public static int indexOf(char[] src, char[] sub) { 
    int limit = src.length - sub.length; 
    int i, j; 
    for(i = 0; i < limit +1; ++i) { 
     for(j = 0; j < sub.length; ++j) { 
      if (src[i+j] != sub[j]) { 
       break; 
      } 
     } 
     if (j == sub.length) 
       return i; 
    } 
    return -1; 
} 
0

这里的一些伪代码,让你开始

我们称之为“ABCD”的源字符串和“DC”的目标字符串

change source string to list of chars 

change target string to list of chars 

for each char in target list of char 

    if source list does not contain target char 
     return false; 

return true 
0

获取所有置换直到它包含所需的子字符串

Permutation Logic based on

public static void main(String[] args) { 
    System.out.println(Test.checkIfContains("ABCD", "DC")); 
} 

public static Boolean checkIfContains(String main, String check) { 
    return permutation("", main, check); 
} 

private static Boolean permutation(String prefix, String main, String check) { 
    int n = main.length(); 
    if (n == 0) { 
     if (checkFor(prefix, check)) { 
      return true; 
     } 
    } else { 
     for (int i = 0; i < n; i++) { 
      if (permutation(prefix + main.charAt(i), main.substring(0, i) + main.substring(i + 1, n), check)) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 

private static boolean checkFor(String prefix, String check) { 
    return prefix.contains(check); 
} 
0

据我所知,你想看看第二个字符串(我称为checkString)的所有字符是否包含在第一个字符串(refString)中。我会继续使用这样的功能

private boolean checkString(String refString, String checkString) { 
    boolean a; 
    for (int i; i < checkString.length(); i++) { 
     for (int j; j < refString.length(); j++) { 
      a |= checkString.charAt(i) == refString.charAt(j); 
     } 
     if (!a) return false; 
    } 
    return true; 
} 

只有当checkString中的所有字符都在引用字符串中时才返回true。

相关问题