当这看起来很简单并且有很多关于字符串/字符/正则表达式的问题时,我觉得有点愚蠢的发帖,但我找不到我需要的东西(除了另一种语言:删除所有文本后某些点).
我有以下代码:
[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);
}
Run Code Online (Sandbox Code Playgroud)
我在上面的问题中尝试了解决方案(希望语法是相同的!)但不是.我想首先删除queryString,它可以是任何可变长度,然后删除页面名称,也可以是任何长度.
如何从完整的URL中删除查询字符串,以便此测试通过?
Ant*_*ram 245
对于字符串操作,如果你只想杀死?之后的所有东西,你可以这样做
string input = "http://www.somesite.com/somepage.aspx?whatever";
int index = input.IndexOf("?");
if (index > 0)
input = input.Substring(0, index);
Run Code Online (Sandbox Code Playgroud)
编辑:如果在最后一个斜线之后的所有内容,请执行类似的操作
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
Run Code Online (Sandbox Code Playgroud)
或者,由于您正在使用URL,因此您可以像使用此代码一样使用它
System.Uri uri = new Uri("http://www.somesite.com/what/test.aspx?hello=1");
string fixedUri = uri.AbsoluteUri.Replace(uri.Query, string.Empty);
Run Code Online (Sandbox Code Playgroud)
ePa*_*dit 97
在第一个之前删除所有内容 /
input = input.Substring(input.IndexOf("/"));
Run Code Online (Sandbox Code Playgroud)
在第一个之后删除所有内容 /
input = input.Substring(0, input.IndexOf("/") + 1);
Run Code Online (Sandbox Code Playgroud)
在最后一个之前删除所有内容 /
input = input.Substring(input.LastIndexOf("/"));
Run Code Online (Sandbox Code Playgroud)
删除最后一个后的所有内容 /
input = input.Substring(0, input.LastIndexOf("/") + 1);
Run Code Online (Sandbox Code Playgroud)
在指定的char之后删除字符的更简单的解决方案是使用String.Remove()方法,如下所示:
在第一个之后删除所有内容 /
input = input.Remove(input.IndexOf("/") + 1);
Run Code Online (Sandbox Code Playgroud)
删除最后一个后的所有内容 /
input = input.Remove(input.LastIndexOf("/") + 1);
Run Code Online (Sandbox Code Playgroud)
小智 5
这是另一个简单的解决方案。以下代码将返回“ |”之前的所有内容 字符:
if (path.Contains('|'))
path = path.Split('|')[0];
Run Code Online (Sandbox Code Playgroud)
实际上,您可以根据需要设置任意数量的分隔符,但是假设您只有一个分隔符,则可以用以下方法在'|'之后得到所有内容:
if (path.Contains('|'))
path = path.Split('|')[1];
Run Code Online (Sandbox Code Playgroud)
(我在第二段代码中所做的更改只是数组的索引。)