如何用Java解析这个字符串?

前缀/ DIR1 / DIR2 / DIR3 / dir4 / ..

如何在Java中解析上述字符串中的dir1, dir2值?

这里的前缀可以是:

在/ usr /本地/的Apache2 /简历

如果要将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/"substringsubstring方法生成。 然后,该String将通过split运行。

输出:

 dir1 dir2 dir3 dir4 

再次编辑

如果此String实际上处理文件路径,则使用File类可能比使用字符串操作更可取。 类似File类已经考虑了处理文件路径的所有复杂性,这些类将更加健壮。

在这种情况下,为什么不使用new File("prefix/dir1/dir2/dir3/dir4")并从那里开始?

 ... String str = "bla!/bla/bla/" String parts[] = str.split("/"); //To get fist "bla!" String dir1 = parts[0]; 
 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 {
   //它不以您的前缀开头
 }
  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); } 

输出 – dir1 dir2 dir3 dir4

如果它是文件,您可以通过创建文件的instanceof来获取零件,然后询问其细分。

这很好,因为无论斜线的方向如何,它都能工作; 它是独立于平台的(除了Windows中的“驱动器号”…)

 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 

String.split(String regex)很方便但是如果你不需要正则表达式处理,那么请使用substring(..)示例,java.util.StringTokenizer或使用Apache commons lang 1 。 不使用正则表达式时的性能差异可以是速度增加1到2个数量级。

使用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的更多信息。

 String s = "prefix/dir1/dir2/dir3/dir4" String parts[] = s.split("/"); System.out.println(s[0]); // "prefix" System.out.println(s[1]); // "dir1" ...