2015-02-11 11 views
-1

У меня есть текстовый файл с большим количеством слов. Я хотел бы удалить слова, содержащие повторяющиеся буквы (например, zoos - содержит 2 o's). Каков наилучший способ сделать это?Как удалить определенное слово из текста, который удовлетворяет условию?

+1

Можете ли вы показать работу, которую вы сделали до сих пор ? –

ответ

2

Regular expressions может работать на вас. Что-то вроде

Pattern p = Pattern.compile("([a-zA-Z])*([a-zA-Z])\\2([a-zA-Z])*"); 
Matcher m = p.matcher("zoo"); 
System.out.println(m.matches()); 

Просто добавьте петлю, чтобы попробовать каждое слово в файле, и если m.matches() == true - удалить его.

Кстати, это не будет работать, если вы наберете как этот

+0

Измените [Oo] на [a-zA-Z]. Он сказал, что повторяющиеся символы не повторяются. –

+0

Спасибо за исправление – miraclefoxx

+0

Без проблем маленький парень. +1 за ваши усилия :) –

0

Этот пример с использованием регулярных выражений и потоковый API:

package demo; 

import java.util.Arrays; 
import java.util.List; 
import java.util.stream.Collectors; 

public class Demonstration 
{ 
    public static void main(String[] args) 
    { 
     List<String> input = Arrays.asList(// 
      new String[] {"a", "bb", "ccc", "ded", "ff", "ghi", "jkll"}); 

     // Prints [a, ded, ghi] 
     System.out.println(removeWordsWithRepetitiveCharacters(input)); 
    } 

    private static List<String> removeWordsWithRepetitiveCharacters(List<String> words) 
    { 
     return words.stream() // 
      .filter(word -> !word.matches(".*(\\w)\\1+.*")) // 
      .collect(Collectors.toList()); 
    } 
} 
Смежные вопросы