删除string中特定字符后的字符,然后删除子string?
当这看起来很简单,而且string/字符/正则expression式有很多问题,但我找不到我所需要的(除了另一种语言: 在某个点之后删除所有文本 ),我觉得有点笨。
我有以下代码:
[Test] public void stringManipulation() { String filename = "testpage.aspx"; String currentFullUrl = "http://localhost:2000/somefolder/myrep/test.aspx?q=qvalue"; String fullUrlWithoutQueryString = currentFullUrl.Replace("?.*", ""); String urlWithoutPageName = fullUrlWithoutQueryString.Remove(fullUrlWithoutQueryString.Length - filename.Length); String expected = "http://localhost:2000/somefolder/myrep/"; String actual = urlWithoutPageName; Assert.AreEqual(expected, actual); }
我在上面的问题尝试了解决scheme(希望语法将是相同的!),但不是。 我想首先删除可能是任何可变长度的queryString,然后删除页面名称,这可能是任何长度。
我怎样才能从完整的URL中删除查询string,这样的testing通过?
对于string操作,如果你只是想杀死所有的东西,你可以这样做
string input = "http://www.somesite.com/somepage.aspx?whatever"; int index = input.IndexOf("?"); if (index > 0) input = input.Substring(0, index);
编辑:如果最后一个斜杠后的所有内容都是这样的
string input = "http://www.somesite.com/somepage.aspx?whatever"; int index = input.LastIndexOf("/"); if (index > 0) input = input.Substring(0, index); // or index + 1 to keep slash
或者,由于您使用的是url,因此您可以像使用此代码一样进行操作
System.Uri uri = new Uri("http://www.somesite.com/what/test.aspx?hello=1"); string fixedUri = uri.AbsoluteUri.Replace(uri.Query, string.Empty);
在第一个“/”之前删除所有内容
input = input.Substring(input.IndexOf("/"));
在第一个“/”后删除所有内容
input = input.Substring(0, input.IndexOf("/")+1);
删除最后一个“/”之前的所有内容
input = input.Substring(input.LastIndexOf("/"));
要删除最后一个“/”后的所有内容
input = input.Substring(0, input.LastIndexOf("/")+1);
在指定的char之后删除字符的更简单的选项是使用string.Remove()方法,如下所示:
在第一个“/”后删除所有内容
input = input.Remove(input.IndexOf("/")+1);
要删除最后一个“/”后的所有内容
input = input.Remove(input.LastIndexOf("/")+1);
Uri类通常是操纵Url的最佳select。
Request.QueryString
可以帮助您获取URL
包含的parameters
和值
例
string http = "http://dave.com/customers.aspx?customername=dave" string customername = Request.QueryString["customername"].ToString();
所以customernamevariables应该等于dave
问候
我第二个Hightechrider:有一个专门的Url类已经为你build成。
然而,我还必须指出,PHP的replaceAll使用正则expression式来search模式,你也可以在.NET中使用正则expression式 – 查看RegEx类。
要删除特定字符前的所有内容,请在下面使用。
string1 = string1.Substring(string1.IndexOf('$') + 1);
这是做什么,把所有的$ char之前,并将其删除。 现在,如果你想删除一个字符后的项目,只需将+1更改为-1,然后设置!
但是对于一个URL,我会使用内置的.NET类来获取。
你可以使用.NET的内置方法来删除QueryString
。 即Request.QueryString.Remove["whatever"];
这里无论在[]中是你想删除的
querystring
名字。
试试这个…我希望这会有所帮助。