2016-06-07 73 views
-3

我有這個經常轉換的職位標題爲slu,,我的問題是當我在我的職位名稱中包含一個字符像(:,|,?)我得到錯誤。我不知道該怎樣讓我經常包含特殊字符的想法..如何在正則表達式中包含特殊的charactars?

這裏是我的代碼:

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

而應該看起來像:功能解剖的最普拉提核安-illustrated引導到一個安全的

+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編碼和如何使用它?或我應該使用它的地方 –

+0

@FMsw它用於生成編碼的URL - 我不知道你是否需要它 - 這取決於你,但它與你所做的一樣,但不是修復文件以在文件系統上工作,它修復了它的URL – Rob

相關問題