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"