2015-08-14 6 views
0

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

"bob", "dad", "bad" 

И предположим, что я хочу, чтобы проверить, если определенное слово в словаре путем реализации метода:

public boolean checkWord(String word) 

Однако характер '.' также представляет некоторые письма, так что если, например: «»

checkWord(".ob") 

то результат true (как могут быть замещенными или представлены b и будет bob). Или другой пример:

checkWord("..d") 

, который также возвращает true (из-за "dad").

Мне нужна помощь только в том, как проверить соответствие слов. Предположим, что структура данных равна ArrayList, а словарь представлен как myList. Мой код всегда дает true за что-то String Проезжаю. Пожалуйста, помогите, пожалуйста, помогите мне? Я просто хочу знать, как вернуть true, если словарь содержит "bob", а проходящее контрольное слово - ".ob", то как я могу опустить символ '.' и проверить другие символы? Заранее спасибо!

public boolean checkWord(String word){ 
    boolean result = false; 
    if(myList.contains(word)){ 
     return true; 
    } 
    else{ 
     for(int i = 0; i < myList.size(); i++){ 
      if(myList.get(i).length() == word.length()){ 
      for(int j = 0; j < word.length(); j++){ 
       if(word.charAt(j) == myList.get(i).charAt(j)){ 
        result = true; 
       } 
      } 
      } 
     } 
    } 
return result; 
} 
+0

'b.b' будет выдавать' истину' также из-за 'bob'? Значение '.' действует как подстановочный знак? – Emz

+0

Не могли бы вы хотя бы попытаться написать хорошее название для своего вопроса. – bhspencer

+0

@Emz, да, вы правы –

ответ

1

Если я правильно понял, вы должны иметь возможность использовать регулярное выражение.

public boolean checkWord(String word){ 
    boolean result = false; 
    if(myList.contains(word)){ 
     return true; 
    } 
    else{ 
     word += "$"; 
     Pattern p = Pattern.compile(word); 
     for(int i = 0; i < myList.size(); i++){ 
      Matcher m = p.matcher(myList.get(i)); 
      if(m.find()){ 
       result = true; 
       break; 
      }else{ 
       result = false; 
      } 
     } 
    } 
    return result; 
} 
Смежные вопросы