2016-07-19 7 views
1

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

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

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

C:/Users/mbauer/ 

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

Я пробовал:

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

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

ответ

0

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

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

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

+0

Да, я буду иметь в виду, но это только для моих работников в моей компании, и мы все используем затмение только на окнах, но спасибо за ваш ответ ! хорошего дня! – MBauer

+0

Да, я не хотел, чтобы программа плагина, но это задача от моего босса, я должен запрограммировать плагин, чтобы сократить задачи для моего сотрудника .. им на 2-й год здесь, в этой компании, и никто не хочет программировать этот плагин. ... – MBauer

+0

Я вижу, но, в конце концов, это не имеет большого значения. У вас будут клиенты, использующие ваш продукт. И woha, эти клиенты живут по соседству, и у них есть прямой доступ к вашему менеджеру. Еще больше причин для доставки качественного продукта.Мой личный два цента: что бы вы ни делали, найдите опытных Java-программистов вокруг вас, чтобы просмотреть свою работу (пока вы работаете над ней). Особенно, когда вы больше новичок в своей компании - последнее, чего вы хотите, - это ваше имя на продукте, который все должны использовать ... и это не работает (достаточно хорошо). – GhostCat

3

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

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/

+0

большое спасибо! что решило мою проблему! извините за мой плохой английский, я изучаю программирование, и я родом из Германии! :-) – MBauer

+1

@MBauer - Если вы имеете дело с «дорожками», то вам стоит подумать об ответе Энди. Ywc btw – TheLostMind

+0

, если я рассмотрю ответ Энди Путь, получивший резание после «C: /» и после 4-го слэша ... – MBauer

6

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

System.out.println(
    FileSystems.getDefault().getPath(getPath).subpath(0, 3)); 
+2

Это правильный подход и, возможно, самый элегантный. – TheLostMind

+0

Какой класс нам нужно импортировать для этого? – VatsalSura

+1

@ VatsalSura 'java.nio.file.FileSystems'. –

3

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

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

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

System.out.println(path.subpath(0, 3).toAbsolutePath());