2015-06-16 3 views
-1

Я хочу проверить, например, если строка «ABCD» содержит строку «DC» в ней на Java. Но это не пример подстроки, потому что каждый раз, когда меня изменят строки и проверочные символы. и я храню проверку символов в массиве. Так что подстрока не удалась, она работает только, если у меня есть CD или BC. и я не мог соответствовать, поскольку каждый раз, когда я вызываю контрольный символ из массива. SO, что мне делать?Как проверить, содержит ли строка какой-либо символ в Java?

+6

Вы могли бы показать код, который у нас есть? – farid99

+1

Показать пример кода. Опишите, какие именно случаи вы хотите совместить, и какие случаи должны быть неудачными. – markspace

+0

«ABCD» содержит «AD»? – Mshnik

ответ

0

Я использую этот метод для char и byte массив. После того, как вы получили индекс массива src, с которым сопоставляется sub, вы можете сохранить его в любом месте. Попробуйте это:

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 в эталонной строке.

Смежные вопросы