前缀/ DIR1 / DIR2 / DIR3 / dir4 /..
如何在Java中解析上述字符串中的dir1, dir2
值?
这里的前缀可以是:
的/ usr /本地/ apache2的/恢复
答案 0 :(得分:52)
如果您要将String
分割为/
字符,String.split
方法将有效:
例如:
String s = "prefix/dir1/dir2/dir3/dir4";
String[] tokens = s.split("/");
for (String t : tokens)
System.out.println(t);
输出
prefix
dir1
dir2
dir3
dir4
修改强>
前缀中带有/
的情况,我们知道前缀是什么:
String s = "slash/prefix/dir1/dir2/dir3/dir4";
String prefix = "slash/prefix/";
String noPrefixStr = s.substring(s.indexOf(prefix) + prefix.length());
String[] tokens = noPrefixStr.split("/");
for (String t : tokens)
System.out.println(t);
不带前缀"slash/prefix/"
的子字符串由substring
方法生成。然后String
运行split
。
输出:
dir1
dir2
dir3
dir4
再次修改
如果这个String
实际上是在处理文件路径,那么使用File
类可能比使用字符串操作更可取。像File
这样已经考虑到处理文件路径的所有复杂问题的类会更加健壮。
答案 1 :(得分:2)
在这种情况下,为什么不使用new File("prefix/dir1/dir2/dir3/dir4")
并从那里开始?
答案 2 :(得分:2)
...
String str = "bla!/bla/bla/"
String parts[] = str.split("/");
//To get fist "bla!"
String dir1 = parts[0];
答案 3 :(得分:1)
String str = "/usr/local/apache/resumes/dir1/dir2"; String prefix = "/usr/local/apache/resumes/"; if( str.startsWith(prefix) ) { str = str.substring(0, prefix.length); String parts[] = str.split("/"); // dir1=parts[0]; // dir2=parts[1]; } else { // It doesn't start with your prefix }
答案 4 :(得分:1)
String result;
String str = "/usr/local/apache2/resumes/dir1/dir2/dir3/dir4";
String regex ="(dir)+[\\d]";
Matcher matcher = Pattern.compile( regex ).matcher( str);
while (matcher.find( ))
{
result = matcher.group();
System.out.println(result);
}
output-- DIR1 DIR2 DIR3 dir4
答案 5 :(得分:0)
public class Test {
public static void main(String args[]) {
String s = "pre/fix/dir1/dir2/dir3/dir4/..";
String prefix = "pre/fix";
String[] tokens = s.substring(prefix.length()).split("/");
for (int i=0; i<tokens.length; i++) {
System.out.println(tokens[i]);
}
}
}
答案 6 :(得分:0)
如果是文件,您可以通过创建文件的instanceof来获取部件,然后询问其细分。
这很好,因为无论斜线的方向如何,它都能工作;它是独立于平台的(除了Windows中的“驱动器号”...)
答案 7 :(得分:0)
String.split(String regex)很方便但如果你不需要正则表达式处理,那么请使用substring(..)示例,java.util.StringTokenizer或使用Apache commons lang 1。不使用正则表达式时的性能差异可以是速度增加1到2个数量级。
答案 8 :(得分:0)
使用String.split
方法肯定会在其他答案中说明。
此外,StringTokenizer
类可用于使用/
作为分隔符来解析String。
import java.util.StringTokenizer;
public class Test
{
public static void main(String []args)
{
String s = "prefix/dir1/dir2/dir3/dir4/..";
StringTokenizer tokenizer = new StringTokenizer(s, "/");
String dir1 = tokenizer.nextToken();
String dir2 = tokenizer.nextToken();
System.out.println("Dir 1 : "+dir1);
System.out.println("Dir 2 : " + dir2);
}
}
输出为:
Dir 1 : prefix
Dir 2 : dir1
您可以在此处找到有关StringTokenizer的更多信息。
答案 9 :(得分:-1)
String s = "prefix/dir1/dir2/dir3/dir4"
String parts[] = s.split("/");
System.out.println(s[0]); // "prefix"
System.out.println(s[1]); // "dir1"
...