如何用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/"
的substring
由substring
方法生成。 然后,该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" ...