从左侧第二次斜线后剪切字符串

时间:2016-07-19 08:24:44

标签: java string path cut slash

我想在Eclipse中编写一个PlugIn。现在我从一个选定的项目中获得了一个带有路径的字符串:

C:/Users/mbauer/abcde/efghj/klmno...

现在我想在子串中剪切String,如下所示:

C:/Users/mbauer/

字符串应该在左边第3个斜杠后切断。其他用户的路径应该是动态的..

我试过了:

String getPath = getSelectedProjectPath(dialog);
System.out.println(getPath.substring(0, 15));

但是对于IndexOf 0和15,Path不再是动态的,如果名字较长的用户尝试使用该插件!

4 个答案:

答案 0 :(得分:6)

我认为Path.subpath会做你所描述的:

System.out.println(
    FileSystems.getDefault().getPath(getPath).subpath(0, 3));

答案 1 :(得分:3)

像这样的正则表达式会起作用:

public static void main(String[] args) throws Exception {
    String s1 = "C:/Users/mbauer/abcde/efghj/klmno";
    System.out.println(s1.replaceAll("((.*?/){3}).*", "$1"));
}

O / P:C:/Users/mbauer/

答案 2 :(得分:3)

正如另一个答案中所建议的那样,您可以使用 java.nio.file 包中的PathPaths

以下是使用它的另一种方法:

Path path = Paths.get("C:/Users/mbauer/abcde/efghj/klmno");

System.out.println(path.subpath(0, 3).toAbsolutePath());

答案 3 :(得分:0)

例如,您可以使用indexOf()来搜索某些字符的索引。换句话说:你真的想做一些关于如何在字符串中搜索的先前研究;以及如何操纵它们。有很多文档可以解释这些事情。一种更高级的方法是使用Java正则表达式resp。 patterns

但请记住:并非所有eclipse用户都在使用Windows。你可能有很多人使用Mac或Linux;因此,您目前的做法很快就会打破。所以,而不是做低级别的字符串操作;你应该熟悉Java Paths之类的概念,以便理解你应该使用的抽象来创建一个合理的插件。

所以,严肃地说:这种字符串搜索/操作是绝对基本的东西。而创建eclipse插件确实是一个高级主题。含义:你是初学者;所以最好退一步,简单地学习更多关于Java语言的内容;在开始编写eclipse插件之前。因为机会是:鉴于你目前的知识,你将创建一个没有人愿意使用的糟糕插件。