Вырезать строку после второго слеша слева

java string path cut slash

540 просмотра

4 ответа

19 Репутация автора

Я хочу запрограммировать плагин в Eclipse. Теперь я вернул строку с путем из выбранного проекта:

C:/Users/mbauer/abcde/efghj/klmno...

Теперь я хотел бы вырезать строку в подстроке следующим образом:

C:/Users/mbauer/

Строка должна быть вырезана после 3-го слеша слева. Путь должен быть динамическим для других пользователей.

Я пытался:

String getPath = getSelectedProjectPath(dialog);
System.out.println(getPath.substring(0, 15));

Но с IndexOf 0 и 15 путь больше не является динамическим, если пользователь с более длинным именем пробует плагин!

Автор: MBauer Источник Размещён: 19.07.2016 08:24

Ответы (4)


0 плюса

112324 Репутация автора

Например, вы можете использовать indexOf () для поиска индекса определенных символов. Другими словами: вы действительно хотите провести предварительное исследование о том, как искать в строках; и как можно манипулировать ими. Существует множество документов, объясняющих такие вещи. Еще один продвинутый способ - использовать регулярные выражения Java, соответственно. шаблоны .

Но имейте в виду: не все пользователи Eclipse используют Windows. У вас может быть довольно много людей, использующих Mac или Linux; Таким образом, ваш нынешний подход очень скоро сломается. Таким образом, вместо выполнения строковых операций низкого уровня; Вы должны ознакомиться с такими понятиями, как Java Paths , чтобы понять абстракции, которые вы должны использовать для создания разумного плагина.

Итак, серьезно: такой вид поиска / манипуляции со строками является абсолютно базовым. Принимая во внимание, что создание плагинов Eclipse - действительно сложная тема. Значение: вы начинающий; так что может быть лучше сделать шаг назад и просто узнать гораздо больше о языке Java; прежде чем начать писать плагины затмения. Потому что есть вероятность: учитывая ваши текущие знания, вы создадите паршивый плагин, который никто не захочет использовать.

Автор: GhostCat says Reinstate Monica Размещён: 19.07.2016 08:28

3 плюса

32511 Репутация автора

Такое регулярное выражение будет работать:

public static void main(String[] args) throws Exception {
    String s1 = "C:/Users/mbauer/abcde/efghj/klmno";
    System.out.println(s1.replaceAll("((.*?/){3}).*", "$1"));
}

O / P: C:/Users/mbauer/

Автор: TheLostMind Размещён: 19.07.2016 08:30

6 плюса

98098 Репутация автора

Я думаю, что Path.subpathбудет делать то, что вы описываете:

System.out.println(
    FileSystems.getDefault().getPath(getPath).subpath(0, 3));
Автор: Andy Turner Размещён: 19.07.2016 08:30

3 плюса

15075 Репутация автора

Как предлагается в другом ответе, вы можете использовать Pathи Pathsиз пакета java.nio.file .

Вот еще один способ использовать его:

Path path = Paths.get("C:/Users/mbauer/abcde/efghj/klmno");

System.out.println(path.subpath(0, 3).toAbsolutePath());
Автор: Arnaud Размещён: 19.07.2016 08:38
Вопросы из категории :
32x32