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);
}