Кодирование путей к файлам

Вы всегда можете создать вторую переменную с нужным вам содержимым и проверить ее значение.

var ids = people.Select(s => s.id).ToList();

Вернет все идентификаторы, которые вы пытаетесь увидеть.

11
задан Micah 23 June 2009 в 17:47
поделиться

4 ответа

Недопустимые символы: \ /:? "<> |

Вам просто нужно использовать функцию GetInvalidFileNameChars: ( http://msdn.microsoft.com/library/system.io.path.getinvalidfilenamechars.aspx )

string sanitizedString = Regex.Replace("Wikipedia:About", "[" + Regex.Escape(new string(Path.GetInvalidFileNameChars())) + "]", "_");

Все недопустимые символы будут заменены на _ (подчеркивание).

9
ответ дан 3 December 2019 в 09:42
поделиться

Нет, я боюсь, что в BCL ничего не существует.

Вам придется написать свою собственную функцию, которая заменяет недопустимые символы (путем перебора входных данных и использования StringBuilder , возможно). Метод System.IO.Path.GetInvalidFileNameChars () поможет вам сделать это.

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

1
ответ дан 3 December 2019 в 09:42
поделиться
0
ответ дан 3 December 2019 в 09:42
поделиться

Вам нужно, чтобы имена файлов были точно такими, как они указаны в URL-адресе?

Если нет, используйте имена файлов Base64. Каждый раз, когда вы создаете файл, конвертируйте имя файла в base64 перед записью или чтением файла.

static public string EncodeTo64(string toEncode)
{
    byte[] bytes
          = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
    string stringBase64
          = System.Convert.ToBase64String(bytes);
    return stringBase64;
}

string fileName64 = Path.Combine(AppDataPath, EncodeTo64("Wikipedia:About"));

Редактировать: Я понял, что Base64 имеет символ '/', который является недопустимым символом для имени файла. После преобразования замените '/' на '-'.

1
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: