我有这个字符串
../cms/Client Files/gallery images/home1.jpg&w=914&h=360&cache=1:28:02 PM
我希望删除文件末尾的内容。在c#我正在尝试
html = Regex.Replace(html, @"&(w=([0-9]*))", "", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"&(h=([0-9]*))", "", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"&(cache=([0-9]*):([0-9]*):([0-9]*) [AP]M)", "", RegexOptions.IgnoreCase);
但它没有删除任何东西。如果我试试
html = Regex.Replace(html, @"w=([0-9]*)", "", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"h=([0-9]*)", "", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"cache=([0-9]*):([0-9]*):([0-9]*) [AP]M", "", RegexOptions.IgnoreCase);
然后我得到
../cms/Client Files/gallery images/home1.jpg&&&
如何删除&'s也是?
答案 0 :(得分:1)
我应该尝试这个(比使用Regex更容易):
int index = html.IndexOf("&");
if (index >= 0) html = html.Substring(0, index);
或试试这个:
html = Regex.Replace(html, @"\&w=([0-9]*)", "", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"\&h=([0-9]*)", "", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"\&cache=([0-9]*):([0-9]*):([0-9]*) [AP]M", "", RegexOptions.IgnoreCase);
答案 1 :(得分:1)
You don't need to escape the & to match it,正如其他人错误地建议的那样。
事实上,您的代码完全按照您的描述运行!我刚刚在LINQPad中运行了您的代码,并验证了结果:
var html = "../cms/Client Files/gallery images/home1.jpg&w=914&h=360&cache=1:28:02 PM";
html = Regex.Replace(html, @"&(w=([0-9]*))", "", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"&(h=([0-9]*))", "", RegexOptions.IgnoreCase);
html = Regex.Replace(html, @"&(cache=([0-9]*):([0-9]*):([0-9]*) [AP]M)", "", RegexOptions.IgnoreCase);
html.Dump(); // Outputs: "../cms/Client Files/gallery images/home1.jpg"
因此,您应该检查其余代码并查看是否存在其他错误。这是调试器可能向您显示灯光的地方。
另一个想法,因为您的变量名为html
,&
是否可能实际编码为&
?这可能解释了一些事情。
作为旁注:
你的模式都不需要()
,没有它们它们会更简单。
答案 2 :(得分:0)
这应该够了......
html = Regex.Replace(html, @"\&.*", "", RegexOptions.IgnoreCase);