Код C #, эквивалентный VB Replace(str1, str2, str3)
, равен str1.Replace(str2, str3)
.
Таким образом, эта строка:
pdfTemplate = Replace(pdfTemplate, "bin\Debug\", "")
должна стать такой:
pdfTemplate = pdfTemplate.Replace("bin\Debug\", "")
Хотя это тоже неправильно, потому что в C # символ \
в строке экранирует следующий символ, и в этом случае компилятор C # будет жаловаться на нераспознанную escape-последовательность, а также на новую строку в константной строке, потому чтосначала он не понимает, что вы подразумеваете под \D
, затем \"
экранирует кавычку, что означает, что строка не заканчивается.
Вы можете либо удвоить обратную косую черту, либо поставить @
перед строкой, поэтому должно работать любое из следующего:
pdfTemplate = pdfTemplate.Replace(@"bin\Debug\", "");
pdfTemplate = pdfTemplate.Replace("bin\\Debug\\", "");
Обратите внимание, что я также добавил точки с запятой в конец операторов.
Слово предупреждения : Для манипуляций path обычно лучше использовать класс Path
в .NET, так как он предназначен для правильной обработки путевых странностей.
Например, если у вас есть файлнаmed Trashbin\Debug\File
в итоге вы получите TrashFile
, что не совсем правильно.
Вы можете сделать это:
string templateFolder = Path.GetFullPath(Application.StartupPath);
if (templateFolder.EndsWith(@"\\bin\\debug", StringComparison.InvariantCultureIgnoreCase))
templateFolder = Path.GetFullPath(Path.Combine(templateFolder, "..", ".."));
string templateFile = Path.Combine(templateFolder, "PDFs", "2017-I9.pdf");
Если вам нужен код для запускаВ других операционных системах, отличных от Windows, вы должны использовать класс Path
, чтобы найти Debug
и bin
, а также в других операционных системах могут использоваться прямые косые черты или двоеточия в качестве разделителей пути.1045 *File.Replace
делает что-то совершенно другое, он заменяет файл , а не содержимое строки.