我有一個文本包含一些單詞,我想標記,並且要標記的單詞包含在列表中。問題是這些單詞中的一些是其他單詞的子串,但我想從列表中標記最長的識別字符串。如何替換文本中的字符串列表,其中有些字符串是其他子字符串?
例如,如果我的文本是「foo和bar與foo bar不同」。並且我的列表包含「foo」,「bar」和「foo bar」,結果應該是「[tag] foo [/ tag]和[tag] bar [/ tag]與[tag] foo bar [/ tag] 「。
String text = "foo and bar are different from foo bar.";
List<String> words = new ArrayList();
words.add("foo");
words.add("bar");
words.add("foo bar");
String tagged = someFunction(text, words);
應該是什麼someFunction的代碼,這樣該字符串taggedText的值是<tag>foo</tag> and <tag>bar</tag> are different from <tag>foo bar</tag>.
?
按長度排序。 –
...您可以使用[Collections.sort(列表,比較器 super T>)](https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort(java .util.List,%20java.util.Comparator))。 –