2013-11-19 2 views
0

У меня есть набор слов с именем «стоп-слова». Теперь мне нужно совместить два слова, но между этими словами может появиться пробел или слова в наборе «стоп-слова», например. «энергетическая энергия», «энергия энергии», «энергия для энергии», «энергия энергии». В наборе стоп-слов есть также «for, of, the, ...»Regex для удаления стоп-слов между двумя словами

Я хочу получить «энергетическую энергию» без учета времени. Является ли это возможным?

+0

не ясно, но то, что я предполагаю, что вы хотите найти слово между словами, чтобы .. ??? – Simmant

+1

Не очень понятно, можете ли вы привести пример, рассказывающий, какие i/p и какие o/p? – SeeTheC

+0

Вы хотите удалить стоп-слова из текста? – Ashish

ответ

1

Поиск подстроки будет работать. Это будет форматировать любую фразу в виде

Слово (игнорируемых слов) + Endword в Слово Endword

String power = "power of energy"; 
String[] toks = power.split("[\\s]+"); // in case of extra space between words. 

String removed = 
     power.substring(power.indexOf(toks[0]), power.indexOf(toks[0]) 
                + toks[0].length()) 
     + " " + power.substring(power.indexOf(toks[toks.length - 1]), power.indexOf(toks[toks.length - 1 ]) 
                + toks[toks.length - 1].length()); 

System.out.println(removed); 

Выход: энергия мощность

Способ

public static String removeStopWord(String phrase){ 
    String[] toks = phrase.split("[\\s]+"); 

    String removed = 
     phrase.substring(phrase.indexOf(toks[0]), phrase.indexOf(toks[0]) 
                + toks[0].length()) 
     + " " + phrase.substring(phrase.indexOf(toks[toks.length - 1]), phrase.indexOf(toks[toks.length - 1]) 
                + toks[toks.length - 1].length()); 
    return removed; 
} 
1

Простой replaceAll() Явы будет делать трюк :)

public class Replace { 
public static void main(String[] args) { 
String s="power of the world"; 
s=s.replaceAll("of|the|", ""); 
s=s.replaceAll("()+", " "); 
System.out.println(s); 
} 
} 

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

  • Нет связанных вопросов^_^