c# - uma - substring length 1




Remover caracteres após caractere específico em string e, em seguida, remover substring? (6)

A classe Uri geralmente é sua melhor aposta para manipular Urls.

Eu me sinto meio idiota postando isso quando isso parece meio simples e há toneladas de perguntas sobre strings / caracteres / regex, mas eu não consegui encontrar exatamente o que eu precisava (exceto em outro idioma: Remove All Text After Certain Point ).

Eu tenho o seguinte código:

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

Eu tentei a solução na pergunta acima (esperando que a sintaxe fosse a mesma!), Mas não. Eu quero primeiro remover o queryString que poderia ser qualquer comprimento variável, em seguida, remova o nome da página, que novamente poderia ser qualquer tamanho.

Como posso obter a remoção da string de consulta do URL completo de modo que esse teste seja aprovado?


Aqui está outra solução simples. O código a seguir retornará tudo antes do '|' personagem:

if (path.Contains('|'))
   path = path.Split('|')[0];

De fato, você poderia ter quantos separadores quiser, mas assumindo que você tenha apenas um caracter de separação, aqui está como você obteria tudo depois do '|':

if (path.Contains('|'))
   path = path.Split('|')[1];

(Tudo o que eu mudei na segunda parte do código foi o índice da matriz.)


Para manipulação de string, se você quer apenas matar tudo depois do?, Você pode fazer isso

string input = "http://www.somesite.com/somepage.aspx?whatever";
int index = input.IndexOf("?");
if (index > 0)
   input = input.Substring(0, index);

Edit: Se tudo após a última barra, faça algo como

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

Alternativamente, desde que você está trabalhando com um URL, você pode fazer algo com ele como este código

System.Uri uri = new Uri("http://www.somesite.com/what/test.aspx?hello=1");
string fixedUri = uri.AbsoluteUri.Replace(uri.Query, string.Empty);

Para remover tudo antes de um caractere específico, use abaixo.

string1 = string1.Substring(string1.IndexOf('$') + 1);

O que isto faz é, pega tudo antes do $ char e o remove. Agora, se você quiser remover os itens depois de um personagem, basta alterar o +1 para -1 e você está pronto!

Mas para uma URL, eu usaria a classe .NET integrada para tirar isso.


você pode usar o método QueryString do .NET para remover o QueryString . ie, Request.QueryString.Remove["whatever"];

aqui o que quer que seja no [] é o nome da querystring que você deseja remover.

Tente isso ... Espero que isso ajude.


Request.QueryString ajuda você a obter os parameters e valores incluídos na URL

exemplo

string http = "http://dave.com/customers.aspx?customername=dave"
string customername = Request.QueryString["customername"].ToString();

então a variável customName deve ser igual a dave

Saudações





string