簡體   English   中英

將字符串中的特殊字符更改為空格,然后獲取原始字符串

[英]change special characters in a string to empty spaces and then get the original string

我正在使用 function 替換 asp.net 4.5 中的特殊字符,而不是將這個字符串用於我下一頁的 url。

internal static string GetNormalText(string Text)
{
    Regex reg = new Regex("[*'\",_&#^@/]");
    Text = reg.Replace(Text, string.Empty);
    return Text.Replace(" ", "-").ToLower();
}

在下一頁上,我可以獲取原始文本還是有任何方法可以取回原始字符串我不想使用 session 變量來存儲原始字符串,因為用戶無法直接導航到 url。 例如,我的原始字符串是chak 86/6-r並將其轉換為chak-866-r成為 url http://localhost:58261/chak-866-r/現在我可以在此頁面上取回此部分或任何其他解決方案會有所幫助。

只有在轉換本身明確且可逆的情況下,才能恢復原始值。 這不是這里的情況,好像輸入是"I have spaces - and - dashes" ,那么 output 將是"I-have-spaces---and---dashes" ,你不知道知道哪些是空格,哪些是破折號。 如果原始值包含*&等:它們就消失了

也許你應該在這里使用的是 %url 編碼; 這樣做的好處是它也適用於更多字符(非 ASCII 等),完全可逆而無需您做任何事情,並且在瀏覽器中仍然“友好”,但是:空格通常不會被表示為文字空格在 URL 中,即使在“友好”模式下,因為它會混淆您是否在進行搜索等chak 86/6-r的 % 編碼版本是chak%2086%2F6-rchak+86%2F6-r (空格區別對待)。

或者:您可以將合成密鑰與不可逆的slug 一起使用。 這就是 Stack Overflow 正在做的事情 - 在您的問題中,url 是https://stackoverflow.com/questions/62214023/change-special-characters-in-a-string-to-empty-spaces-and-then-get-the-original/ - 62214023是合成鍵, change-special-characters-in-a-string-to-empty-spaces-and-then-get-the-original是僅顯示的、不可逆的 slug從你的問題標題。 不能反轉也沒關系:我們可以從合成鍵中得到原始值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM