2014-02-11 8 views
0

Предположим, что у меня есть переменная, установленная на путь изображения. Пусть img = "C: \ Users \ Example \ Desktop \ Test \ Stuff \ Icons \ test.jpg"(VB6) Нарезка строки до определенной точки

Я хочу отрезать все до «\ Icons» с помощью Vb6. Поэтому после нарезки строки это будет только «\ Icons \ test.jpg».

Я пробовал возиться с функцией Mid $ в VB6, но у меня действительно не было большого успеха. Мне известно о том, что Substring не является функцией, доступной в vb6, но только в vb.net.

+1

использование 'Instr' найти место, которые вы хотите, то' Mid', '' Left' или Right', чтобы получить желаемую подстроку Порции – Plutonix

+0

@Plutonix Спасибо! Я понял, как это сделать. Я установил значение функции Instr (которое возвращало исходную позицию строки) в переменную, использовало эту переменную в функции Mid $, чтобы получить весь текст, начиная с строки, которую я хотел. –

ответ

4

После первых \ иконками

path = "C:\Users\Example\Desktop\Test\Stuff\Icons\test.jpg" 

?mid$(path, instr(1, path, "\icons\", vbTextCompare)) 

> \Icons\test.jpg 

Или после того, как последний должен там быть> 1

path = "C:\Users\Example\Desktop\Test\Icons\Stuff\Icons\test.jpg" 

?right$(path, len(path) - InStrRev(path, "\icons\", -1, vbTextCompare) + 1) 

> \Icons\test.jpg 
3

Это довольно легко сделать, в общем, с помощью функции Split. Я написал метод, чтобы продемонстрировать его использование, и для усмешек требуется необязательный параметр, чтобы указать, сколько каталогов вы хотите вернуть. Передача номера не возвращает имя файла, передача очень большого числа возвращает полный путь (локальный или UNC). Обратите внимание, что в методе нет обработки ошибок.

Private Function GetFileAndBasePath(ByVal vPath As String, Optional ByVal baseFolderLevel = 0) As String 
    Dim strPathParts() As String 
    Dim strReturn As String 
    Dim i As Integer 

    strPathParts = Split(vPath, "\") 
    Do While i <= baseFolderLevel And i <= UBound(strPathParts) 
     If i > 0 Then 
      strReturn = strPathParts(UBound(strPathParts) - i) & "\" & strReturn 
     Else 
      strReturn = strPathParts(UBound(strPathParts)) 
     End If 
     i = i + 1 
    Loop 

    GetFileAndBasePath = strReturn 

End Function 
Смежные вопросы