删除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名字。

试试这个…我希望这会有所帮助。