Вы всегда можете создать вторую переменную с нужным вам содержимым и проверить ее значение.
var ids = people.Select(s => s.id).ToList();
Вернет все идентификаторы, которые вы пытаетесь увидеть.
Недопустимые символы: \ /:? "<> |
Вам просто нужно использовать функцию GetInvalidFileNameChars: ( http://msdn.microsoft.com/library/system.io.path.getinvalidfilenamechars.aspx )
string sanitizedString = Regex.Replace("Wikipedia:About", "[" + Regex.Escape(new string(Path.GetInvalidFileNameChars())) + "]", "_");
Все недопустимые символы будут заменены на _ (подчеркивание).
Нет, я боюсь, что в BCL ничего не существует.
Вам придется написать свою собственную функцию, которая заменяет недопустимые символы (путем перебора входных данных и использования StringBuilder
, возможно). Метод System.IO.Path.GetInvalidFileNameChars ()
поможет вам сделать это.
Однако самым простым решением может быть просто перехват исключения, возникающего при недопустимый символ указан в пути и обеспечивает обратную связь с пользователем.
Вам нужно, чтобы имена файлов были точно такими, как они указаны в 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 имеет символ '/', который является недопустимым символом для имени файла. После преобразования замените '/' на '-'.