2015-03-31 3 views
-1

У меня есть String со значениемКак проверить, содержит ли строка строку символов определенной строки?

String rest="bac"; 

У меня есть еще один String со значением

String str="baack"; 

Если я использую

str.contains(rest); 

она возвращает ложь. Но я хочу, чтобы результат был правдой. Поскольку «baack» содержит все буквы от string rest

Можно ли это сделать? С помощью этого метода или без него?

+0

«Строка» не является «множеством» символов, это «список» символов в порядке. –

+0

Да, это, безусловно, возможно. Что вы пробовали? – tnw

+4

Будут ли буквы должны быть в одном порядке? Что вы хотите ответить на «bar» .contains («ra»)? –

ответ

0

К сожалению, стандартного метода это не делается, насколько я знаю.

Если то, что вы хотите, чтобы проверить, что вторая строка содержит по крайней мере один раз каждый символ первой строки, то вы можете проверить каждый символ один за другим с помощью следующего теста:

boolean result = true; 
for (char c : test.toCharArray()) { 
    result &= str.indexOf(c) > -1; 
} 
return result; 

Или в качестве альтернативы:

for (char c : test.toCharArray()) { 
    if (str.indexOf(c) == -1) { 
     return false; 
    } 
} 
return true; 

Возможно, он не оптимален, но он работает и его легко читать.

+0

Спасибо. Да, это сработает :) –

0

Поскольку заказ не важен, ваш вопрос заключается в том, будет ли первый набор символов содержать второй набор символов.

// Initial the sets 
Set<char> bigSet = new HashSet<char>(Arrays.asList(str)); 
Set<char> smallSet = new HashSet<char>(Arrays.asList(rest)); 

for (char c : smallSet) { 
    if(!bigSet.contains(c)){ 
     return false; 
    } 
} 
return true; 
0

Вот еще один способ убедиться, что все символы из одной строки находятся во второй строке. Это длинный путь, но это один из самых простых способов работы с персонажами из String в java. Я знаю, что это не оптимально, но оно служит цели.

 String rest="bac"; 
     String str="baack"; 
     char[] strChar = str.toCharArray(); 
     char[] restChar = rest.toCharArray(); 
     int count = 0; 

     for(int i=0;i<restChar.length;i++){ 
      for(int j=0;j<strChar.length; j++){ 
       if(restChar[i] == strChar[j]){ 
        count++; 
       } 
      } 
     } 

     if(count>=restChar.length){ 
      System.out.println("All the characters from: "+rest+" are in: "+str); 
     } 
Смежные вопросы