Подтвердить что ты не робот

Как разбирать эту строку в Java?

Префикс/dir1/dir2/dir3/dir4/..

Как анализировать значения dir1, dir2 из указанной выше строки в Java?

Префикс здесь может быть:

/USR/локальные/apache2/резюме

4b9b3361

Ответ 1

Если вы хотите разделить 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

Edit

Случай с / в префиксе, и мы знаем, что такое префикс:

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, которые уже учитывают все тонкости работы с файловыми путями, будут более надежными.

Ответ 2

В этом случае, почему бы не использовать new File("prefix/dir1/dir2/dir3/dir4") и перейти оттуда?

Ответ 3

...
String str = "bla!/bla/bla/"

String parts[] = str.split("/");

//To get fist "bla!"
String dir1 = parts[0];

Ответ 4

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
}

Ответ 5

 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

Ответ 6

Использование метода String.split, безусловно, будет работать, как сказано в других ответах здесь.

Кроме того, класс StringTokenizer может использоваться для синтаксического анализа строки с использованием / в качестве разделителя.

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.

Ответ 7

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

}

Ответ 8

Если это файл, вы можете получить детали, создав экземпляр файла, а затем попросите его сегменты.

Это хорошо, потому что он будет работать независимо от направления косых черт; он независим от платформы (кроме "букв дисков" в окнах...)

Ответ 9

String.split(String regex) удобно, но если вам не нужна обработка регулярных выражений, тогда перейдите к примеру подстроки (..), java.util.StringTokenizer или используйте Apache commons lang 1. Разница в производительности при использовании регулярных выражений может быть усилением на 1-2 порядка по скорости.

Ответ 10

String s = "prefix/dir1/dir2/dir3/dir4"

String parts[] = s.split("/");

System.out.println(s[0]); // "prefix"
System.out.println(s[1]); // "dir1"
...