2013-03-22 2 views
0

Я создаю небольшой FTP-клиент и застрял в небольшой проблеме, можете ли вы помочь мне разобраться в этом.Извлечение текста из ftp-адреса

Так я беру текст с comboBox1.Text ведьмы позволяет сказать «/ тест/SQL/он /» Но для создания нового каталога Мне нужно извлечь «он» и «/ тест/SQL /» " это «как новое имя каталога и«/test/sql/»для создания новой папки.

Для второй части я могу использовать:

string s = comboBox1.Text; 
     s = s.Remove(s.LastIndexOf('/')); 
     s = s.Remove(s.LastIndexOf('/')); 
     s = s + "/"; 
     MessageBox.Show(s); 
     //result "/test/sql/" 

Но как получить первую часть «это» любой один?

ответ

1

попробовать это,

string s = comboBox1.Text; 
string path_s = Path.GetFileName(Path.GetDirectoryName(path)); 

Внутренний вызов GetDirectoryName возвращает полный путь, в то время как внешний вызов GetFileName() возвращает последний путь компонент - который будет имя папки.

+0

Спасибо, работает только одна коррекция: string s = comboBox1.Text; в строку path = comboBox1.Text; – zee

1

Попробуйте это:

string path = "/test/sql/it/"; 
string[] directories = path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); 
string lastDir = directories.Last(); 
+0

Имея несколько затруднений: каталогов. Last(); Ошибка «System.Array» не содержит определения для «Last» и не используется метод расширения «Last», принимающий первый аргумент типа «System.Array» (вам не хватает директивы using или сборки ссылка?) – zee

+0

добавить 'using System.Linq;' – polybios

+0

Большое спасибо ... – zee

0

Используйте это регулярное выражение:

.+(/.+/)$ 

Это даст вам /it/ в группе 1.
Если вы не хотите, слэш, использовать это регулярное выражение вместо:

.+/(.+)/$ 
+0

Что-то вроде этого: Match output = Regex.Match (comboBox_RemotePatch.Text, ". + (/.+/) $"); – zee