2016-06-07 2 views
-3

У меня есть этот обычный, чтобы преобразовать заголовок сообщения в слизню, моя проблема в том, когда я включаю в свое название сообщения такие символы, как (:, |,?). Я получил ошибку. и я не имею ни малейшего представления о том, как сделать мои регулярные включать специальные символы ..Как включить специальные символы в регулярное выражение?

Вот мой код:

public static string MakeUrlFriendly(this string value) 
    { 
     value = value.ToLowerInvariant(); 

     value = Regex.Replace(value, @"[^a-z0-9\s-]", ""); 
     // convert multiple spaces into one space 
     value = Regex.Replace(value, @"\s+", " ").Trim(); 
     // cut and trim 
     value = value.Substring(0, value.Length <= 70 ? value.Length : 70).Trim(); 
     value = Regex.Replace(value, @"\s", "-"); // hyphens 


     value = value.ToLowerInvariant().Replace(" ", "-"); 
     value = Regex.Replace(value, @"[^0-9a-z-]", string.Empty); 

     return value; 
    } 

Я называю это здесь:

var Myurl = model.Book_name; 
      model.UrlSlug = Myurl.MakeUrlFriendly(); 

Когда я добавить после имени, как: «Функциональная анатомия пилатес Ядро: иллюстрированное руководство к сейфу»

enter image description here

Я получил эту ошибку:

enter image description here

в то время как оно должно быть выглядит следующим образом: функционально-анатомических-оф-Пилатес-жильный-в-гид иллюстрированный к-а-безопасный

+0

Я не очень понимаю, что вы просите, но вы должны быть в состоянии только избежать специальных символов ваше регулярное выражение (например,??) Возможно, вы можете опубликовать одно из регулярных выражений, которое дает вам проблемы. – itsme86

+0

Я обновил вопрос –

+0

Какая ошибка? Вы оставили его пустым. – itsme86

ответ

0

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

var myTitle = "Functional Anatomy of the Pilates Core: An Illustrated Guide to a Safe"; 
foreach (var invalidChar in Path.GetInvalidFileNameChars()) 
    myTitle = myTitle.Replace(invalidChar.ToString(),string.Empty); 

//Now you can trim spaces, etc 

Кроме того, при создании безопасного URL, вы должны использовать встроенный в URL Encode

+0

На самом деле это сейчас работает, но можете ли вы объяснить мне больше о Url Encode и как его использовать? или где я должен его использовать –

+0

@FMsw Используется для генерации закодированных URL-адресов. Я не уверен, что вам это понадобится или нет. Это зависит от вас, но это по тому же пути, что и вы, но вместо исправление файла для работы в файловой системе, оно исправляет его для URL-адресов – Rob

Смежные вопросы