私は一連のパス文字列を持っています:
/content/example-site/global/library/about/contact/thank-you.html
/content/example-site/global/corporate/about/contact/thank-you.html
/content/example-site/countries/uk/about/contact/thank-you.html
/content/example-site/countries/de/about/contact/thank-you.html
/content/example-site/others/about/contact/thank-you.html
...
(多くの場合、パスはこれよりもはるかに長くなります)
ご覧のとおり、すぐに違いに気付くのは困難です。そのため、文字列の関連部分を強調したいと思います。
違いを見つけるために、現在、すべての文字列の共通のプレフィックスとサフィックスを計算しています。
String prefix = getCommonPrefix(paths);
String suffix = getCommonSuffix(paths);
for (String path : paths) {
String relevantPath = path.substring(prefix.length(), path.length() - suffix.length());
// OUTPUT: prefix + "<b>" + relevantPath + "</b>" + suffix
}
Commons LangStringUtils.getCommonPrefix
から使用している接頭辞については。
接尾辞については、ユーティリティが見つかりませんでした(CommonsにもGuavaにもありません。後者には、正確に2つの文字列に対して1つしかありません)。そのため、Commons Lang のものと同様に、自分で作成する必要がありました。
ライブラリの 1 つでいくつかの関数を見逃した場合、または Java 8 ストリーミング関数を使用した簡単な方法があるかどうか疑問に思っています。