2013-07-16 4 views
1

Я читаю закодированную строку в память и декодирую ее. Строка - это что-то вроде "test \ file1.txt".C# extract escape символ из строки

Обычно C# видит это как строковый литерал "test \\ file1.txt", правильно присваивая escape-символ обратному символу.

В этом случае C# видит косую черту в качестве escape-символа для файла f из файла. ("\ Е").

Невозможно использовать метод Заменить (@ "\", @ "\") метод строки, потому что C# не находит "\", он находит только "\ f". Имя файла полностью изменено, поэтому я не могу использовать Заменить (@ "\ f", @ "\ f") либо ...

Как я могу продолжить эту строку в памяти и добавить косую черту , так что строка является допустимым путем?

Строка просто загружается из текстового файла и проходит через декодер.

public static string Decode(string inp) 
{ 
    byte[] ToDecode = System.Convert.FromBase64String(inp); 
    return System.Text.ASCIIEncoding.UTF8.GetString(ToDecode); 
} 

Это где я на самом деле использовать строку (которая называется «A»)

foreach (string A in Attchmnts) 
    Msg.Attachments.Add(new Attachment(_AttachmentsPath + @"\" + A)); 

Если проверить содержимое приложения, с помощью немедленно, это результат :

?_AttachmentsPath + @"\" + A 
"\\\\BUPC1537\\MailServer\\Attachments\\test\file2.txt" 

я вручную закодированные строки с помощью Callin г следующий метод в непосредственной (а затем вставить эти данные в документ XML):

public static string Encode(string inp) 
{ 
    byte[] ToEncode = System.Text.ASCIIEncoding.UTF8.GetBytes(inp); 
    return System.Convert.ToBase64String(ToEncode); 
} 

//Immediate code 
?Utils.Encoder.Encode("test\file2.txt") 
"dGVzdAxpbGUyLnR4dA==" 
+3

Пожалуйста, покажите свой код. То, что вы говорите, не происходит, когда вы декодируете строку. Здесь должно быть что-то еще. Скорее всего, строка уже неправильно написана в файле. –

+0

Кажется, что вы действительно получаете testfile1.txt при чтении строки – Toto

+0

Добавлен код декодера. – Recipe

ответ

3

Как я подозревал, все вместе, код, который создает файл не правильно обратный слеш.

Фикс его, делая это, либо с помощью дословного строки:

Utils.Encoder.Encode(@"test\file2.txt") 

или явно избежать обратной косой черты:

Utils.Encoder.Encode("test\\file2.txt") 
+0

Я сразу же попробую! edit: Какая ошибка, чтобы сделать ... Большое спасибо Даниэль Хильгарт. – Recipe