将两个字符串组合成表示路径的单个字符串

时间:2011-04-08 07:29:30

标签: java

我想将字符串"test/""/go"合并为"test/go"

我该怎么做?

8 个答案:

答案 0 :(得分:11)

仅使用java.io.File最简单的方法是:

String combined_path = new File("test/", "/go").getPath();

答案 1 :(得分:6)

来自FilenameUtils.normalize()

Apache Commons IO可以满足您的需求。

示例:

FilenameUtils.normalize("foo/" + "/bar");

返回字符串"foo/bar"

答案 2 :(得分:5)

根据Jon Skeet here

的建议
public static String combine (String path1, String path2)
{
    File file1 = new File(path1);
    File file2 = new File(file1, path2);
    return file2.getPath();
}

答案 3 :(得分:4)

附加两个字符串并将//替换为/,如下所示

"test//go".replace("//", "/")

输出:test/go

答案 4 :(得分:2)

String test =  "test/";
String go = "/go";
String result = test + go.substring(1);

答案 5 :(得分:1)

假设这是一个与文件名相关的问题,而不是查看apache-commons-io及其FilenameUtils

final String test = "test/";
final String go ="/go";
System.out.println(FilenameUtils.normalize(test + go));
在Windows上输出

test\go

normalize方法将为您做更多事情,例如在Windows系统上将'/'更改为'\'。

顺便提一句,祝贺你的声望得分几乎只是提问: - )

答案 6 :(得分:1)

这是一个Guava方法,在从项目的开头和结尾修剪此角色的所有实例后,将Iterable<String>个项目与char连接起来:

public static String joinWithChar(final Iterable<String> items,
    final char joinChar){
    final CharMatcher joinCharMatcher = CharMatcher.is(joinChar);
    return Joiner.on('/').join(
        Iterables.transform(items, new Function<String, String>(){

            @Override
            public String apply(final String input){
                return joinCharMatcher.trimFrom(input);
            }
        }));
}

<强>用法:

System.out.println(joinWithChar(Arrays.asList("test/", "/go"), '/'));

<强>输出:

  

测试/去


此解决方案

  • 不限于文件路径,而是限于任何类型的字符串
  • 不会替换在令牌中找到的任何字符,只会从边界修剪它们

答案 7 :(得分:-2)

更简单:

"test/" + "." + "/go"