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