c # эквивалентно функции stripcslashes? - PullRequest
2 голосов
/ 25 августа 2010

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

Это включает в себя использование полученной строки, кодированной base64, и ее сохранение в виде zip на веб-сервере. Этот почтовый индекс тогда открыт, и изображение восстановлено.

Нам удалось сохранить его в виде zip-файла, но он поврежден и не может быть открыт.

Документация от шлюза довольно скудная, и у нас есть только пример php, на который можно положиться. Я думаю, что мы выяснили, как «перевести» большинство из них, за исключением функции PHP stripcslashes (inputvalue) . Может кто-нибудь пролить свет на то, как сделать то же самое в c #?

Мы благодарны за любую помощь!

1 Ответ

0 голосов
/ 25 августа 2010

stripcslashes () ищет элементы типа «\ x» в более длинных строках (где «x» может быть любым символом или, возможно, более чем одним). Если «x» не распознается как значащий, он просто удаляет «\», но если он действительно распознает его как допустимую escape-последовательность в стиле C (т. Е. «\ N» - это новая строка; «\ t» - табуляция и т. Д. ), насколько я понимаю, вместо этого вставляется распознанный символ: \ t будет заменен символом табуляции (я думаю, 0x09) в вашей строке.

Я не знаю ни одного простого способа заставить платформу .net делать то же самое, не создавая подобную функцию самостоятельно. Это, очевидно, не очень сложно, но вам нужно знать, какие escape-последовательности обрабатывать.

Если вам случится узнать (или выяснить, проверив текст base64), что единственная вещь в вашем вводе, которая потребует обработки, - это определенная одна или две последовательности (скажем, символы табуляции), это становится очень простым, и следующее фрагмент показывает использование String.Replace ():

string input = @"Some\thing";    // '@' means string stored without processing '\t'
Console.WriteLine(input);
string output = input.Replace(@"\t", "\t");
Console.WriteLine(output);

Конечно, если вы действительно хотите удалить все косые черты:

string output = input.Replace(@"\", "");
...