¿Quitar caracteres después del carácter específico en la secuencia, luego quitar la subserie?

Me siento un poco tonto publicando esto cuando parece algo simple y hay un montón de preguntas sobre cadenas / caracteres / expresiones regulares, pero no pude encontrar todo lo que necesitaba (excepto en otro idioma: Eliminar todo el texto después de cierto punto ).

Tengo el siguiente 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); } 

Probé la solución en la pregunta anterior (¡esperando que la syntax sea la misma!) Pero no. Quiero eliminar primero queryString, que podría ser de cualquier longitud variable, y luego eliminar el nombre de la página, que de nuevo podría tener cualquier longitud.

¿Cómo puedo obtener eliminar la cadena de consulta de la URL completa para que pase esta prueba?

Para la manipulación de cadenas, si solo quieres matar todo después del?, Puedes hacer esto

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

Editar: si todo después de la última barra, haz 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, como trabajas con una URL, puedes hacer algo con ella 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 eliminar todo antes del primer “/”

  input = input.Substring(input.IndexOf("/")); 

Para eliminar todo después de la primera “/”

  input = input.Substring(0, input.IndexOf("/")+1); 

Para eliminar todo antes del último “/”

  input = input.Substring(input.LastIndexOf("/")); 

Para eliminar todo después de la última “/”

  input = input.Substring(0, input.LastIndexOf("/")+1); 

Una opción aún más simple para eliminar caracteres después de una char especificada es usar el método string.Remove () de la siguiente manera:

Para eliminar todo después de la primera “/”

  input = input.Remove(input.IndexOf("/")+1); 

Para eliminar todo después de la última “/”

  input = input.Remove(input.LastIndexOf("/")+1); 

La clase Uri es generalmente la mejor opción para manipular Urls.

Request.QueryString te ayuda a obtener los parameters y valores incluidos en la URL

ejemplo

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

por lo que la variable de nombre de cliente debe ser igual a Dave

Saludos

En segundo lugar Hightechrider: hay una clase Url especializada ya creada para ti.

Debo señalar, sin embargo, que PHP’s replaceAll usa expresiones regulares para el patrón de búsqueda, lo que también puedes hacer en .NET: mira la clase RegEx.

Para eliminar todo antes de un carácter específico, utilice a continuación.

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

Lo que hace es tomar todo antes de $ char y lo elimina. Ahora, si quieres eliminar los elementos después de un personaje, simplemente cambia el +1 a un -1 y ¡estás listo!

Pero para una URL, usaría la clase incorporada .NET para tomar eso.

puede usar el método integrado de .NET para eliminar el QueryString . es decir, Request.QueryString.Remove["whatever"];

aquí lo que sea en el [] es el nombre de la querystring de querystring que desea eliminar.

Prueba esto … Espero que esto ayude.