C# 删除字符串中特定字符后的字符,然后删除子字符串?
当这看起来很简单,而且有很多关于字符串/字符/正则表达式的问题,但我找不到我所需要的东西时,我觉得发这篇文章有点傻(除了用另一种语言:) 我有以下代码:C# 删除字符串中特定字符后的字符,然后删除子字符串?,c#,.net,string,C#,.net,String,当这看起来很简单,而且有很多关于字符串/字符/正则表达式的问题,但我找不到我所需要的东西时,我觉得发这篇文章有点傻(除了用另一种语言:) 我有以下代码: [Test] public void stringManipulation() { String filename = "testpage.aspx"; String currentFullUrl = "http://localhost:2000/somefolder/myrep/test.asp
[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);
}
我尝试了上述问题的解决方案(希望语法相同!),但没有。我想先删除queryString,它可以是任意长度,然后删除页面名称,它也可以是任意长度
如何从完整URL中删除查询字符串以使此测试通过?对于字符串操作,如果您只想在?之后删除所有内容,可以这样做
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);
通常情况下,操作Url的最佳选择是。第二个Hightechrider:已经为您构建了一个专门的Url类
但是,我还必须指出,PHP的replaceAll使用正则表达式作为搜索模式,您也可以在.NET中使用正则表达式-查看RegEx类。您可以使用.NET的内置方法删除
查询字符串。
i、 例如,Request.QueryString.Remove[“whatever”]代码>
在这里,[]中的任何内容都是您想要查询的查询字符串的名称
移除
试试这个。。。
我希望这会有所帮助。要删除特定字符之前的所有内容,请使用下面的命令
string1 = string1.Substring(string1.IndexOf('$') + 1);
这样做的目的是,获取$char之前的所有内容并将其删除。现在,如果您想删除字符后面的项目,只需将+1更改为-1即可
但是对于URL,我会使用内置的.NET类来处理它 删除第一个/
input = input.Substring(input.IndexOf("/"));
input = input.Substring(0, input.IndexOf("/") + 1);
input = input.Substring(input.LastIndexOf("/"));
input = input.Substring(0, input.LastIndexOf("/") + 1);
input = input.Remove(input.IndexOf("/") + 1);
input = input.Remove(input.LastIndexOf("/") + 1);
删除第一个/
input = input.Substring(input.IndexOf("/"));
input = input.Substring(0, input.IndexOf("/") + 1);
input = input.Substring(input.LastIndexOf("/"));
input = input.Substring(0, input.LastIndexOf("/") + 1);
input = input.Remove(input.IndexOf("/") + 1);
input = input.Remove(input.LastIndexOf("/") + 1);
要删除最后一个/
input = input.Substring(input.IndexOf("/"));
input = input.Substring(0, input.IndexOf("/") + 1);
input = input.Substring(input.LastIndexOf("/"));
input = input.Substring(0, input.LastIndexOf("/") + 1);
input = input.Remove(input.IndexOf("/") + 1);
input = input.Remove(input.LastIndexOf("/") + 1);
删除最后一个/
input = input.Substring(input.IndexOf("/"));
input = input.Substring(0, input.IndexOf("/") + 1);
input = input.Substring(input.LastIndexOf("/"));
input = input.Substring(0, input.LastIndexOf("/") + 1);
input = input.Remove(input.IndexOf("/") + 1);
input = input.Remove(input.LastIndexOf("/") + 1);
删除指定字符后的字符的更简单解决方案是使用以下方法:
删除第一个/
input = input.Substring(input.IndexOf("/"));
input = input.Substring(0, input.IndexOf("/") + 1);
input = input.Substring(input.LastIndexOf("/"));
input = input.Substring(0, input.LastIndexOf("/") + 1);
input = input.Remove(input.IndexOf("/") + 1);
input = input.Remove(input.LastIndexOf("/") + 1);
删除最后一个/
input = input.Substring(input.IndexOf("/"));
input = input.Substring(0, input.IndexOf("/") + 1);
input = input.Substring(input.LastIndexOf("/"));
input = input.Substring(0, input.LastIndexOf("/") + 1);
input = input.Remove(input.IndexOf("/") + 1);
input = input.Remove(input.LastIndexOf("/") + 1);
Request.QueryString
帮助您获取参数和URL中包含的值
范例
string http = "http://dave.com/customers.aspx?customername=dave"
string customername = Request.QueryString["customername"].ToString();
因此customername变量应该等于dave
这是另一个简单的解决方案。以下代码将返回“|”字符之前的所有内容:
if (path.Contains('|'))
path = path.Split('|')[0];
事实上,您可以有任意多个分隔符,但假设您只有一个分隔符,下面是如何获得“|”之后的所有内容:
if (path.Contains('|'))
path = path.Split('|')[1];
(我在第二段代码中更改的只是数组的索引。)还是最后一段代码?
。在这种情况下,他可以使用LastIndexOf(“/”),谢谢x2提供了两种方法@在这种情况下,您可以将该URL加载到Uri
,然后访问Uri.Segments
。这将返回一个数组,“somepage.aspx”将是最后一项。我不喜欢挑剔,但它不应该是index>=0吗?一个链接示例会很好。请注意,如果字符串根本不包含“/”的话,这些都将抛出一个示例。显然,如果你像原来的问题那样使用硬编码字符串,这不会成为问题,但在大多数情况下,你会考虑到这一点。@Elezar我想你的意思是“将抛出异常”而不是“示例”,但你的观点是很好的。哈,这已经有5年半了,以前没有人提到过。是的,你完全正确,我的意思是“例外”