2013-04-04 2 views
1

У меня есть метод, который читает файл, помещает каждое слово в массив строк и затем добавляет каждое слово к дереву. Я хочу изменить его так, чтобы слово не было добавлено в дерево, если оно содержит символы английского языка, например, испанский и т. Д. Я все же про метод 'contains', но он не работает в массиве типа String. Как мне это сделать?проверить массив для символов

public void parse(File f) throws Exception { 

    Node root = new Node('+'); //create a root node 
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f))); 

    String line; 
    while((line = br.readLine())!=null){ 
     String[] words = line.toLowerCase().split(" "); 

     for(int i = 0; i < words.length; i++){ 
      addToTree(words[i], root); 
     } 
    }//end of while 
+0

Не можете ли вы использовать метод contains на String (слова [i]), который вы пытаетесь добавить к дереву? – Rush

+0

Вы можете использовать Regex, которые принимают только от a до Z с -; !, '. –

+0

http://stackoverflow.com/questions/2774320/how-to-know-if-a-string-contains-accents это должно решить вашу проблему. –

ответ

3

Вы можете использовать регулярное выражение для этого:

Pattern nonEng = Pattern.compile("[^A-Za-z]"); 
... 
for(int i = 0; i < words.length; i++) { 
    if (!pattern.matcher(words[i]).find()) { 
     addToTree(words[i], root); 
    } 
} 

Это выбросить все слова, которые не, состоящий исключительно из символов английского алфавита.

+1

должно быть словами [i], а не словами [1] –

+0

@dasblinkenlight благодарит миллион! – ciastkoo

0

если слова состоят из букв [A-Za-Z_0-9]

return !myString.matches("^\\w+$"); 

если у вас есть особые требования, такие как знаки препинания и других символов, добавьте их, а также в регулярном выражении. [^ \ w.,;: '"]

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