C# 通过正则表达式替换querystring中的连字符

C# 通过正则表达式替换querystring中的连字符,c#,regex,C#,Regex,由于URLRewrite模块的限制,我用连字符替换querystring值中的所有空格。 服务器端我想将连字符替换回空白,这很好 但是,如果querystring中有一个连字符(在我编码该值之前),当我解码querystring时,它会删除所有连字符,包括应该存在的连字符 因此,我的问题是,如何使用C#中的正则表达式/正则表达式实现以下目标 示例1 …… 查询字符串:“a-search-term” 解码值:“搜索词” 例2 …… 查询字符串:“带连字符的---搜索” 解码值:“连字符-搜索” 另

由于URLRewrite模块的限制,我用连字符替换querystring值中的所有空格。 服务器端我想将连字符替换回空白,这很好

但是,如果querystring中有一个连字符(在我编码该值之前),当我解码querystring时,它会删除所有连字符,包括应该存在的连字符

因此,我的问题是,如何使用C#中的正则表达式/正则表达式实现以下目标

示例1
……
查询字符串:“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”
,这应该更容易处理。