当这看起来很简单并且关于字符串/字符/正则表达式有很多问题时,我觉得有点愚蠢,但我找不到我需要的东西(除了另一种语言:Remove All Text After Certain Point )。
我有以下代码:
[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中删除查询字符串,以便此测试通过?
答案 0 :(得分:225)
对于字符串操作,如果你只想杀死?之后的所有内容,你可以这样做
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);
答案 1 :(得分:86)
删除第一个/
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);
答案 2 :(得分:6)
Uri课程通常是操纵Urls的最佳选择。
答案 3 :(得分:2)
这是另一个简单的解决方案。以下代码将返回“ |”之前的所有内容字符:
@import "~bootstrap/scss/bootstrap-grid";
@include media-breakpoint-up(sm) {
.some-class {
display: block;
}
}
实际上,您可以根据需要设置任意多个分隔符,但是假设您只有一个分隔符,这就是在'|'之后得到所有内容的方法:
if (path.Contains('|'))
path = path.Split('|')[0];
(我在第二段代码中所做的更改只是数组的索引。)
答案 4 :(得分:1)
要删除特定字符之前的所有内容,请使用以下内容。
string1 = string1.Substring(string1.IndexOf('$') + 1);
这样做,将$ char之前的所有内容移除并删除它。现在,如果你想删除一个字符后的项目,只需将+1更改为-1即可设置!
但是对于URL,我会使用内置的.NET类来实现它。
答案 5 :(得分:1)
Request.QueryString
可帮助您获取parameters
URL
和值
示例
string http = "http://dave.com/customers.aspx?customername=dave"
string customername = Request.QueryString["customername"].ToString();
所以customername变量应该等于dave
问候
答案 6 :(得分:0)
我是第二个Hightechrider:已经为你建立了一个专门的Url类。
但是,我还必须指出,PHP的replaceAll使用正则表达式进行搜索模式,你也可以在.NET中进行 - 查看RegEx类。
答案 7 :(得分:0)
您可以使用.NET的内置方法删除QueryString
。
即 Request.QueryString.Remove["whatever"];
这里 []中的是你想要的
querystring
的名字 除去。
试试这个...... 我希望这会有所帮助。