我希望在单个字符串上执行多个任务。
我需要获取一个字符串并使用分隔符(
"/"
)提取不同的子字符串,然后反转子字符串列表,最后使用另一个分隔符("."
)将它们连接起来,使得/tmp/test/hello/world/
变为:world.hello.test.tmp
在Java 7中,代码如下:String str ="/tmp/test/";
List<String> elephantList = new ArrayList<String>(Arrays.asList(str.split("/")));
StringBuilder sb = new StringBuilder();
for (int i=elephantList.size()-1; i>-1; i--) {
String a = elephantList.get(i);
if (a.equals(""))
{
elephantList.remove(i);
}
else
{
sb.append(a);
sb.append('.');
}
}
sb.setLength(sb.length() - 1);
System.out.println("result" + elephantList + " " + sb.toString());
我想知道如何使用Java 8流和其字符串连接函数来实现相同的操作
reduce((s1, s2) -> String.join(".", s2, s1))
看起来和collect
、reverse
和join
一样易读 :-) - RolandPath
是与操作系统无关的,如果任务确实是要替换默认FileSystem
中的分隔符字符而不是特定的'/'
,就像问题中所要求的那样。如果我们讨论的是URI部分或ZIP文件条目等内容,这可能不是正确的解决方案(实际上会添加操作系统依赖项)。 - HolgerPath
。我不知道问题的上下文,所以我觉得展示两种方法会很好。 - Misha