Java 如何获取字符串的一部分?

Java 如何获取字符串的一部分?,java,directory,substring,parent,Java,Directory,Substring,Parent,我试图返回文件/目录的目录以及它们的目录 例如,我有“this/iss/the/root/assets/images/icons/parent”,它是“this/iss/the/root/assets/images/icons/parent/child”的父级 这将是根路径This/iss/the/root,我想获取根路径之后的所有内容:assets/images/icons/examples',即给定根,如何提取根路径之后但子路径之前的所有目录 我试过: parent.lastIndexOf(

我试图返回文件/目录的目录以及它们的目录

例如,我有
“this/iss/the/root/assets/images/icons/parent”
,它是
“this/iss/the/root/assets/images/icons/parent/child”的父级

这将是根路径
This/iss/the/root
,我想获取根路径之后的所有内容:
assets/images/icons/examples'
,即给定根,如何提取根路径之后但子路径之前的所有目录

我试过:

parent.lastIndexOf(root)
但它给了我整个父路径


抱歉,这太冗长了。我已经花了很长时间盯着我的代码看了很久,现在已经快午夜了!

一种方法可能是这样的,结合:


我建议您使用Java7中的类

您只需调用
path.getParent()
或调用
iterator()
,一直工作到到达目的地。

尝试以下方法:

    String str = "this/iss/the/root/assets/images/icons/parent/child";
    String root = "this/iss/the/root/";
    String rootRegex = root.replace("/", "\\/"); //escape fwd slashes
    String ptrnStr = "^" + rootRegex + "(.+)child\\Z";
    java.util.regex.Pattern ptrn = Pattern.compile(ptrnStr); 

    java.util.regex.Matcher mtchr = ptrn.matcher(str);

    if(mtchr.find())
    {
        String between = mtchr.group(1);
        System.out.println("FOUND:  " + between);
    }

Java字符串可以用正则表达式分成几个部分。你试过了吗?还有,lastIndexOf接受一个字符,而不是一个字符串,并返回一个int,而不是一个字符串,所以我不确定你在说什么。我想这就是你要找的。为什么有人对此投了反对票?我想知道同样的事情,@Vash…那么,你做错了。发布co您正在处理的de。这肯定会有帮助。或者接受一个对您有用的答案。+1代表Regex,-1代表complex。顺便说一句,当您决定使用replace时,您可以调用str并将root替换为“”和/child替换为“但是如果字符串的内部,在根和子字符串之间,包含一个与根或子字符串在语法上相同的substrung呢?它会被替换掉。这个/root/subdir1/subdir2/root/subdir4/child的路径是什么?您必须指定从字符串的开始和结束处替换根和子字符串,而不是在两者之间进行任何匹配,这就是为什么我不使用任何替换,而是从索引x到索引y获取字符串的原因。其中x是root.len,y是src.len-child.len;-。
    String str = "this/iss/the/root/assets/images/icons/parent/child";
    String root = "this/iss/the/root/";
    String rootRegex = root.replace("/", "\\/"); //escape fwd slashes
    String ptrnStr = "^" + rootRegex + "(.+)child\\Z";
    java.util.regex.Pattern ptrn = Pattern.compile(ptrnStr); 

    java.util.regex.Matcher mtchr = ptrn.matcher(str);

    if(mtchr.find())
    {
        String between = mtchr.group(1);
        System.out.println("FOUND:  " + between);
    }