String[] words = message.split(" "); if (words.length > 1) { for (int i = 0; i < words.length; i++) { words[i] = words[i].trim().replaceAll("\\(", "").replaceAll("\\)", "") .replaceAll(",", "").replaceAll("'", "").replaceAll("\"", "").toLowerCase().trim(); if (words[i].contains("://") || words[i].equals("") || (words[i].length() == 1 && !(words[i].equalsIgnoreCase("i") || words[i].equalsIgnoreCase("a")))) { continue; } Word w = new Word(); w.word = words[i]; if (i == 0) { Word x = new Word(); x.word = words[i + 1]; w.after.add(x); } else if (i == words.length - 1) { Word x = new Word(); x.word = words[i - 1]; w.before.add(x); } else { Word b = new Word(), a = new Word(); b.word = words[i - 1]; a.word = words[i + 1]; w.before.add(b); w.after.add(a); } Word pp; while ((pp = findWordByText(w.word)) != null) { splice(pp.before, w.before); splice(pp.after, w.after); added.remove(pp); } if (!w.word.trim().equals("")) added.add(w); } }