我有一个问题试图弄清楚这一点。我需要"修复"一些链接,这是一个例子:
所以基本上我想删除所有东西,直到它到达?字符。谢谢你的帮助。
答案 0 :(得分:18)
string s = @"www.site.com/link/index.php?REMOVETHISHERE";
s = s.Remove( s.LastIndexOf('?') );
//Now s will be simply "www.site.com/link/index.php"
应该这样做
答案 1 :(得分:3)
尽管正确制作的字符串操作可行,但提取部分URI信息的更一般方法是使用System.Uri
类型,该类型具有封装这些操作的方法,例如
var uri = new Uri("http://www.site.com/link/index.php?REMOVETHISHERE");
var part = uri.GetLeftPart(UriPartial.Path);
这将更清楚地传达您的代码的意图,并且您将重新使用已知可用的当前实现。
如果字符串不表示有效的URI,System.Uri
构造函数将抛出异常,但如果遇到无效的URI,您仍可能想要在程序中调用其他一些行为。要检测无效的URI,您可以捕获异常或使用TryCreate()
重载之一。
答案 2 :(得分:2)
使用string.split
。
string URL = "www.site.com/link/index.php?REMOVETHISHERE"
var parts = URL.Split('?');
然后parts[0]
将包含“www.site.com/link/index.php”,parts[1]
将包含“REMOVETHISHERE”。然后,您可以使用您想要的任何部分。
在尝试访问数组的第二个元素之前,您应该添加检查以确保有两个部分。你可以(例如)检查字符串是否包含“?”在尝试致电Split
之前。
答案 3 :(得分:0)
删除最后一个“?”以及之后的一切:
string input = @"www.site.com/link/index.php?REMOVETHISHERE";
input = input.Remove(input.LastIndexOf('?'));
OR
string input = @"www.site.com/link/index.php?REMOVETHISHERE";
input = input.Substring(0, input.LastIndexOf('?'));
现在输出将是:
www.site.com/link/index.php