小编典典

删除字符串中特定字符之后的字符,然后删除子字符串?

all

当这看起来很简单并且有大量关于字符串/字符/正则表达式的问题时,我感觉有点愚蠢,但我找不到我需要的东西。

我有以下代码:

[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);
    }

我尝试了上述问题中的解决方案(希望语法相同!)但没有。我想首先删除可能是任何可变长度的查询字符串,然后删除页面名称,它又可以是任何长度。

如何从完整 URL 中删除查询字符串以使该测试通过?


阅读 93

收藏
2022-08-08

共1个答案

小编典典

对于字符串操作,如果您只想杀死 ? 之后的所有内容,您可以这样做

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);
2022-08-08