Как проанализировать эту строку в Java?

Новый тип bytes имеет только 3.x . Встроенный 2.x bytes является просто псевдонимом типа str. В 2.x нет нового типа с именем bytes; Просто новый псевдоним и буквальный синтаксис для str.

Вот фрагмент документации , который всем нравится:

Python 2.6 добавляет bytes как синоним для типа str, а также поддерживает b'' обозначения.

2.6 str отличается от типа байтов 3.0 различными способами; В частности, конструктор совершенно другой. В версии 3.0 bytes([65, 66, 67]) имеет длину 3 элемента и содержит байты, представляющие ABC; в 2.6 bytes([65, 66, 67]) возвращает 12-байтовую строку, представляющую str() списка.

Основное использование bytes в 2.6 будет заключаться в написании тестов типа объекта, таких как isinstance(x, bytes). Это поможет конвертеру 2to3, который не может определить, содержит ли код 2.x строки, содержащие символы или 8-битные байты; Теперь вы можете использовать либо bytes, либо str, чтобы точно представлять ваше намерение, и полученный код также будет корректным в Python 3.0.

20
задан dda 29 December 2017 в 15:15
поделиться

8 ответов

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

Подстрока без префикса "косая черта / prefix / " создается методом substring . Эта Строка затем проходит через разделение .

Вывод:

dir1
dir2
dir3
dir4

Изменить снова

Если эта Строка действительно имеет дело с путями к файлам, используя класс File , вероятно, предпочтительнее, чем использование строковых манипуляций. Такие классы, как File , которые уже учитывают все тонкости работы с путями к файлам, будут более надежными.

55
ответ дан 29 November 2019 в 22:52
поделиться

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

2
ответ дан 29 November 2019 в 22:52
поделиться
...
String str = "bla!/bla/bla/"

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

//To get fist "bla!"
String dir1 = parts[0];
2
ответ дан 29 November 2019 в 22:52
поделиться
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
}
1
ответ дан 29 November 2019 в 22:52
поделиться

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

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

0
ответ дан 29 November 2019 в 22:52
поделиться
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]);
    }
    }

}
0
ответ дан 29 November 2019 в 22:52
поделиться

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

0
ответ дан 29 November 2019 в 22:52
поделиться
String s = "prefix/dir1/dir2/dir3/dir4"

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

System.out.println(s[0]); // "prefix"
System.out.println(s[1]); // "dir1"
...
-1
ответ дан 29 November 2019 в 22:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: