c# - una - ¿Quitar caracteres después del carácter específico en la secuencia, luego quitar la subserie?
quitar el primer caracter de una cadena c# (7)
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 sintaxis 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?
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.
La clase Uri es generalmente la mejor opción para manipular Urls.
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.
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);
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);
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
dequerystring
que desea eliminar.
Prueba esto ... Espero que esto ayude.
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