从字符串中删除文本,直到达到某个字符
我正试图找出这个问题。 我需要“修复”一些链接,这是一个例子:
- www.site.com/link/index.php?REMOVETHISHERE
- www.site.com/index.php?REMOVETHISHERE
所以基本上我想删除所有东西,直到它到达? 字符。 谢谢你的帮助。
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"
应该这样做
尽管正确制作的字符串操作可行,但提取部分URI信息的更一般方法是使用System.Uri
类型,该类型具有封装这些操作的方法,例如
var uri = new Uri("http://www.site.com/link/index.php?REMOVETHISHERE"); var part = uri.GetLeftPart(UriPartial.Path);
这将更清楚地传达您的代码的意图,并且您将重新使用已知可用的当前实现。
如果字符串不表示有效的URI, System.Uri
构造函数将抛出exception,但无论如何,如果遇到无效的URI,您可能希望在程序中调用其他一些行为。 要检测无效的URI,您可以捕获exception或使用其中一个TryCreate()
重载。
使用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
之前。
删除最后一个“?” 以及之后的一切:
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