Como analisar essa string em Java?

prefixo / dir1 / dir2 / dir3 / dir4 / ..

Como analisar os valores dir1, dir2 da string acima em Java?

O prefixo aqui pode ser:

/ usr / local / apache2 / currículos

Se você quiser dividir a String no caractere / , o método String.split funcionará:

Por exemplo:

 String s = "prefix/dir1/dir2/dir3/dir4"; String[] tokens = s.split("/"); for (String t : tokens) System.out.println(t); 

Saída

 prefix dir1 dir2 dir3 dir4 

Editar

Caso com um / no prefixo e sabemos qual é o prefixo:

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

A subseqüência sem o prefixo "slash/prefix/" é feita pelo método de substring . Essa sequência é executada por meio da split .

Saída:

 dir1 dir2 dir3 dir4 

Editar novamente

Se esta String está realmente lidando com caminhos de arquivo, provavelmente é mais preferível usar a class File que usar manipulações de string. Classes como File que já levam em conta todas as complexidades de lidar com caminhos de arquivos, serão mais robustas.

Neste caso, por que não usar o new File("prefix/dir1/dir2/dir3/dir4") e de lá ir?

 ... String str = "bla!/bla/bla/" String parts[] = str.split("/"); //To get fist "bla!" String dir1 = parts[0]; 
 String str = "/ usr / local / apache / currículos / dir1 / dir2";
 Prefixo de cadeia = "/ usr / local / apache / currículos /";

 if (str.startsWith (prefixo)) {
   str = str.substring (0, prefix.length);
   Partes de string [] = str.split ("/");
   // dir1 = partes [0];
   // dir2 = parts [1];
 } outro {
   // Não começa com o seu prefixo
 }
  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); } 

saída – dir1 dir2 dir3 dir4

Se for um arquivo, você pode obter as partes criando um exemplo de arquivo e, em seguida, solicitar seus segmentos.

Isso é bom porque vai funcionar independentemente da direção das barras; é independente de plataforma (exceto pelas “letras de unidade” no 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) é conveniente, mas se você não precisa da manipulação de expressão regular, vá com o exemplo de substring (..), java.util.StringTokenizer ou use o Apache commons lang 1 . A diferença de desempenho quando não estiver usando expressões regulares pode ser um ganho de 1 a 2 ordens de magnitude na velocidade.

Usando o método String.split certamente funcionará como dito em outras respostas aqui.

Além disso, a class StringTokenizer pode ser usada para analisar a String usando / como o delimitador.

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

Dá a saída como:

 Dir 1 : prefix Dir 2 : dir1 

Aqui você pode encontrar mais sobre o StringTokenizer .

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