2016-01-12 3 views
1

Мне нужно заменить конец файла пути в VB. Поэтому я стараюсь этот код:.Replace (String, String) Функция VB не работает

Private Function getfiledata(ByVal fichier As String) As String 
    Dim fileReader As String 
    Dim FichierFinal As String 
    MsgBox(fichier) 
    FichierFinal = fichier.Replace("E002.pfx","_E002.pem") 
    FichierFinal = fichier.Replace("X002.pfx","_X002.pem") 
    FichierFinal = fichier.Replace("A005.pfx","_A005.pem") 
    MsgBox(FichierFinal) 
    fileReader = My.Computer.FileSystem.ReadAllText(FichierFinal) 
    Return fileReader 
End Function 

Первая функция MsgBox вернуть мне следующий результат:

C:/Users/Bruno/Документы/Visual Studio 2010/Проекты/SerEbics/SerEbics/bin /Debug/Certificats/512250X002.pfx

Но второй вернуть мне один и тот же путь:

C:/Users/Bruno/Документы/Видео Studio2010/Проекты/SerEbics/SerEbics/bin/Debug/Certificats/512250X002.pfx

Так что мне нужен этот результат:

C:/Users/Bruno/Документы/видео Studio2010/Проекты/SerEbics/SerEbics/bin/Debug/Certificats/512250_X002.pem

Спасибо заранее!

Томас

+0

Ваш второй 'Replace' делает изменения вы хотите, но третий один переписывает результат второго. Я думаю, что вы использовали второй и третий выражения 'Replace' для' FichierFinal = FichierFinal.Replace ("X002.pfx", "_X002.pem") 'и' FichierFinal = FichierFinal.Replace ("A005.pfx", "_ A005 .pem ")'. – Blackwood

ответ

1

Вы не делаете то, что вы думаете. На каждой новой строке вы отменили предыдущий и определили FichierFinal на новое значение.

Это будет не работает (плюс нет необходимости делать это в 3-х строк):

FichierFinal = fichier.Replace("E002.pfx","_E002.pem").Replace("X002.pfx","_X002.pem").Replace("A005.pfx","_A005.pem") 
3

Три строки в строке, используя функцию Replace дэ не делает совсем то, что вы думаете. Каждый раз они устанавливают FichierFinal на что-то новое. Поэтому они не строят друг друга. Попробуйте заменить их с этим:

FichierFinal = fichier.Replace("E002.pfx","_E002.pem") 
FichierFinal = FichierFinal.Replace("X002.pfx","_X002.pem") 
FichierFinal = FichierFinal.Replace("A005.pfx","_A005.pem") 
1

Это происходит потому, что ваш последний Заменить восстановить исходное имя в переменной FichierFinal. Вы должны выполнить замену только в том случае, если файл заканчивается одной из ожидаемых строк.

If fichier.EndsWith("E002.pfx") Then 
    FichierFinal = fichier.Replace("E002.pfx","_E002.pem") 
Else if fichier.EndsWith("X002.pfx") Then 
    FichierFinal = fichier.Replace("X002.pfx","_X002.pem") 
Else if fichier.EndsWith("A005.pfx") Then 
    FichierFinal = fichier.Replace("A005.pfx","_A005.pem") 
End If 

Таким образом, вы выполняете замену только один раз, а не три раза. Помните, что каждый раз, когда вы вызываете «Заменить новую строку», выделяется и возвращается, и в зависимости от контекста ваших вызовов это может повлиять на производительность вашего кода.

0

Попробуйте этот код у неправильно заменить:

Private Function getfiledata(ByVal fichier As String) As String 
    Dim fileReader As String 
    Dim FichierFinal As String 
    MsgBox(fichier) 
    FichierFinal = fichier.Replace("E002.pfx","_E002.pem") 
    FichierFinal = FichierFinal.Replace("X002.pfx","_X002.pem") 
    FichierFinal = FichierFinal.Replace("A005.pfx","_A005.pem") 
    MsgBox(FichierFinal) 
    fileReader = My.Computer.FileSystem.ReadAllText(FichierFinal) 
    Return fileReader 
End Function 

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

  • Нет связанных вопросов^_^