Java 将两个字符串合并为表示路径的单个字符串

Java 将两个字符串合并为表示路径的单个字符串,java,Java,我想将字符串“test/”和“/go”组合为“test/go” 我该怎么做呢?附加两个字符串并用/替换/,如下所示 String test = "test/"; String go = "/go"; String result = test + go.substring(1); "test//go".replace("//", "/") 输出:test/gofrom做您想做的事 例如: FilenameUtils.normalize("foo/" + "/bar"); 按建议返回字符串“

我想将字符串
“test/”
“/go”
组合为
“test/go”


我该怎么做呢?

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

String test =  "test/";
String go = "/go";
String result = test + go.substring(1);
"test//go".replace("//", "/")
输出:
test/go

from做您想做的事

例如:

FilenameUtils.normalize("foo/" + "/bar");
按建议返回字符串“foo/bar”


假设这是一个与文件名相关的问题,那么请看一下文件名及其类

windows上的输出:

test\go
normalize方法将为您做更多的事情,例如在windows系统上将“/”更改为“\”

顺便说一句,Congat几乎只需提问即可为您的声誉评分:-)

这里有一种方法,在从项目的开始和结束处修剪完此字符的所有实例后,将项目的
Iterable
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"), '/'));
测试/运行


这个解决方案

  • 不限于文件路径,而是任何类型的字符串
  • 不会替换在标记内找到的任何字符,仅从边界修剪它们
使用最简单的方法是:

String combined_path = new File("test/", "/go").getPath();
更简单的是:

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

+1对于这个没有额外库的简单解决方案,尽管它被限制为两个字符串(这对于大多数情况和问题都足够了)@K.Claszen真的吗?问题中提到的文件在哪里?@Sean Patrick Floyd你说得对。对不起,我的大脑有时会在问题中注入内容,我对此无能为力。“照原样”考虑问题,我们必须采用Heiko Rupp解决方案。其他一切都是多余的。@K.Claszen,但这假设我们提前知道参数,这将使整个情况变得不必要。请注意,即使路径不存在,此解决方案也确实有效。问题主题是将两个字符串组合在一个表示路径的字符串中。你的意思可能就是提问:-)@Sean Patrick Floyd我的意思就是这个!修正+1用于回答“按现状”的问题而不做任何进一步的估计。FilenameUtils在我看来是一个更好的路线,但如果你想走这条路线,最好做类似的事情。新文件(“/home”,“//foobar”).getPath()。
String combined_path = new File("test/", "/go").getPath();
"test/" + "." + "/go"