java字符串 集合_java-在字符串集合中查找相关部分

我有一组路径字符串:

/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 + "" + relevantPath + "" + suffix

}

对于前缀,我使用的是Commons Lang的StringUtils.getCommonPrefix.

对于后缀,我找不到实用程序(在Commons和Guava中都没有,后者仅针对两个字符串只有一个).所以我不得不写我自己的-类似于Commons Lang的那本书.

我现在想知道,是否错过了其中一个库中的某些功能-还是

Java 8流功能是否有简便的方法?

解决方法:

这是一个小技巧,我不是说这不是最佳选择,也不是什么也没有,但是如果没有其他选择,那么遵循此路径可能会很有趣:

String[] reversedPaths = new String[paths.length];

for (int i = 0; i < paths.length; i++) {

reversedPaths[i] = StringUtils.reverse(paths[i]);

}

String suffix = StringUtils.reverse(StringUtils.getCommonPrefix(reversedPaths));

标签:java-8,apache-commons-lang3,java

来源: https://codeday.me/bug/20191119/2035877.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值