C# 通过正则表达式替换querystring中的连字符
由于URLRewrite模块的限制,我用连字符替换querystring值中的所有空格。 服务器端我想将连字符替换回空白,这很好 但是,如果querystring中有一个连字符(在我编码该值之前),当我解码querystring时,它会删除所有连字符,包括应该存在的连字符 因此,我的问题是,如何使用C#中的正则表达式/正则表达式实现以下目标 示例1C# 通过正则表达式替换querystring中的连字符,c#,regex,C#,Regex,由于URLRewrite模块的限制,我用连字符替换querystring值中的所有空格。 服务器端我想将连字符替换回空白,这很好 但是,如果querystring中有一个连字符(在我编码该值之前),当我解码querystring时,它会删除所有连字符,包括应该存在的连字符 因此,我的问题是,如何使用C#中的正则表达式/正则表达式实现以下目标 示例1 …… 查询字符串:“a-search-term” 解码值:“搜索词” 例2 …… 查询字符串:“带连字符的---搜索” 解码值:“连字符-搜索” 另
……
查询字符串:“a-search-term”
解码值:“搜索词” 例2
……
查询字符串:“带连字符的---搜索”
解码值:“连字符-搜索” 另外,我也愿意接受关于如何处理类似于 Querystring:“准备讨论” 解码值:“待讨论”
非常感谢尝试Server.UrlEncode(“搜索词”),无需解码,asp.net在读取时将获得正确的值在这种情况下,请尝试escape/unescape函数
您能做一个简单的字符串替换吗 这应该适用于您的基本场景,但不是最佳解决方案:
string newstring = yourstring.Replace("-", " ").Replace(" ", " - ").Replace(" ", " -");
谢谢你的回复。但是,spec要求我们用Javascript编码值,由于上述限制,我们不能使用“+”表示空格。使用%20表示空格怎么样?在替换连字符之前,您是否可以选择URL编码真正的连字符?例如,字符串
“a连字符-search”
可以变成“a连字符-%2dsearch”
,这应该更容易处理。