2011-02-17 23 views
14

Tiene una cadena como A = B & C = D & E = F, cómo eliminar la parte C = D y obtener la cadena como A = B & E = F?Cómo eliminar efectivamente una parte de cadena

+1

Sea más específico: qué suposiciones se hacen en la cadena de entrada y qué reglas determinan la parte que se va a eliminar. Sólo este ejemplo le daría sugerencias triviales y no útiles como "no elimine nada y use una cadena constante" A = B & E = F "en su lugar". –

Respuesta

30

O basta con sustituir a la basura:

input.Replace("&C=D", ""); 

o utilizar una de las soluciones de forma que su pregunta anterior, quitarlo de la estructura de datos y unirse de nuevo juntos.

Usando mi código:

var input = "A=B&C=D&E=F"; 
var output = input 
       .Split(new string[] {"&"}, StringSplitOptions.RemoveEmptyEntries) 
       .Select(s => s.Split('=', 2)) 
       .ToDictionary(d => d[0], d => d[1]); 

output.Remove("C"); 
output.Select(kvp => kvp.Key + "=" + kvp.Value) 
     .Aggregate("", (s, t) => s + t + "&").TrimRight("&"); 
1

Puede split() y se unen de forma manual (en función de cómo los datos se parece a) o utilizar simly String.Replace (, String.Empty)

1

dividirlo en el separador &, excluir la parte C=D por algunos mecanismo, entonces únete a los otros dos? La clase String proporciona los métodos que necesita para eso, incluida la división, unión y subserie de coincidencia.

2

Creo que se necesita para dar un ejemplo más claro para asegurarse de que es algo de la situación, pero algo como esto debería hacer eso:

var testString = "A=B&C=D&E=F" 
var stringArray = testString.Split('&'); 
stringArray.Remove("C=D"); 
var output = String.Join("&", stringArray); 

Algo parecido eso debería funcionar, y debería ser bastante dinámico

3
using System.Web; // for HttpUtility 

NameValueCollection values = HttpUtility.ParseQueryString("A=B&C=D&E=F"); 
values.Remove("C"); 
values.ToString(); // "A=B&E=F" 
+4

Parece que la pregunta es acerca de los parámetros de URL, por lo que me gusta que los esté apuntando hacia HttpUtility – Wilka

0
string xyz = "A=B&C=D&E=F"; 
string output = xyz.Replace("&C=D",""); 

Salida: A = B & E = F

Cuestiones relacionadas