2016-10-29 3 views
-1

У меня есть странная двойная кавычка, когда я ожидаю только один набор двойных кавычек.VB.NET двойное цитирование

Я объединяя переменные в одну строку, чтобы создать команду powershell, которую я собираюсь запустить через рабочую среду powershell. Я использую String.Format() для форматирования строки, но когда я ввожу переменную и добавляю ControlChars.Quote вокруг нее в строке, я получаю 2 набора котировок с каждой стороны переменной. Где бы я не включал цитаты вообще, я не получаю. Оба экземпляра неверны.

Dim psCommand As String = New String("") 
psCommand = String.Format("New-PublicFolder -Name {0}{1} - {2}{0} -Path \ANZ\NZ\", ControlChars.Quote, CurrentJobProjNumber, CurrentJobProjName) 

В результате я получаю при запуске, что это: New-PublicFolder -Name "" 60412345 - Проект Test "" -Path \ ANZ \ NZ \

Я ожидал получить New-PublicFolder -Name «60412345 - Test Project» -Path \ ANZ \ NZ \

Я пробовал несколько разных способов, все, кажется, приводят к неправильному результату выше, а не к правильному результату, который я ожидаю.

psCommand = String.Format("New-PublicFolder -Name " & Chr(34) & CurrentJobProjNumber & " - " & CurrentJobProjName & Chr(34) & " -Path \ANZ\NZ\" 

psCommand = String.Format("New-PublicFolder -Name {0}{1} - {2}{0} -Path \ANZ\NZ\", Chr(34), CurrentJobProjNumber, CurrentJobProjName) 

Dim test As String = New String("") 
test = Chr(34) & CurrentJobProjNumber & " - " & CurrentJobProjName & Chr(34) 
psCommand = "New-PublicFolder -Name " & test & " -Path \ANZ\NZ" 

Я не уверен, что я делаю не так, что-то, что кажется так просто (и это в C#) Я не могу понять, почему в VB.net его такая сложная вещь. Любой совет будет принят во внимание.

Благодаря Боб

+1

Отладчик отображает содержимое строки в формате, совместимом с тем, как вы его записывали в исходный код. Используйте Text Visualizer, чтобы увидеть строку так, как вам нравится. Нажмите значок spyglass. Не принципиально отличается от C#, просто разные правила. Когда вы отлаживаете программу C#, вы увидите обратную косую черту. То же решение, используйте Text Visualizer. –

+0

Ваша первая попытка должна работать должным образом. Проверьте значения CurrentJobProjNumber и CurrentJobProjName, чтобы убедиться, что они не содержат лишних символов кавычек. Автоматическое заполнение кавычек в новых версиях VS часто может приводить к таким проблемам для тех, которые используются для ввода самой котировки, но обычно это приводит к неверной записи строки. Обратите внимание, сделайте себе одолжение и включите опцию Strict. Ваше использование 'New String (" ")' синтаксически некорректно (которое IDE помечено с включенным Option Strict) в дополнение к тому, что оно является пустой тратой усилий по кодированию. – TnTinMn

ответ

0

Чтобы избежать двойные кавычки в vb.net, вы просто использовать две двойные кавычки. Я дам вам пример, используя свой последний тест:

Dim test As String = Nothing 
    Dim CurrentJobProjNumber As String = "60412345" 
    Dim CurrentJobProjName As String = "Test Project" 
    test = """" & CurrentJobProjNumber & " - " & CurrentJobProjName & """" 
    Dim psCommand As String = "New-PublicFolder -Name " & test & " -Path \ANZ\NZ" 
    MsgBox(psCommand) 

Это, безусловно, выглядит странно, имея все эти двойные кавычки сложены вверх, как это, но это будет вам то, что вы ищете.

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