Aquí podría ser tu PUBLICIDAD


Cómo insertar un valor en una cadena en ciertas posiciones c #

votos
3

Tengo un programa que obtiene una cadena de un método. Quiero saber cómo insertar un valor de cadena en esa cadena en ciertas posiciones.

Por ejemplo:

mystring = column1 in('a','b')column2 in('c','d')column3 in('e','f');

Aquí, ¿cómo insertaría el valor de cadena y después de cada aparición del carácter ')' en mystring?

PD. Si es posible, también incluya cómo no insertarlo justo al final.

Publicado el 12/03/2009 a las 20:08
fuente por usuario zohair
En otros idiomas...        العربية       

5 respuestas

votos
5

Probablemente el más simple:

mystring = mystring.Replace(")", ") and ");
mystring = mystring.Substring(0, mystring.Length - " and ".Length);
Respondida el 12/03/2009 a las 08:13
fuente por usuario Joel


Aquí podría ser tu PUBLICIDAD


votos
2

Si quieres decir, y estoy tomando tu cadena literalmente y como viene:

mystring = "column1 in('a','b')column2 in('c','d')column3 in('e','f')"

Entonces podrías hacer lo siguiente:

mystring = mystring.Replace(")c", ") and c");

Lo que resultaría en:

mystring = 
    "column1 in('a','b') and column2 in('c','d') and column3 in('e','f')"

Esto supone que no quieres un "y" final.

Respondida el 12/03/2009 a las 08:15
fuente por usuario Kev

votos
2

Usted podría lograr esto con reemplazar ..

string mystring = "column1 in('a','b')column2 in('c','d')column3 in('e','f')";
mystring = mystring.Replace(")", ") and ").TrimEnd(" and".ToCharArray());

Resultando en:

"column1 in('a','b') and column2 in('c','d') and column3 in('e','f')"
Respondida el 12/03/2009 a las 08:14
fuente por usuario Quintin Robinson

votos
2

Las cadenas son inmutables, por lo que no puedes "simplemente" cambiar el valor de esa cadena. Cada modificación que desea realizar en una cadena, conduce a una nueva instancia de una cadena.

Esta es quizás la forma en que puede lograr lo que quiere:

string s = " x in (a, b) y in (c, d) z in (e , f)";

string[] parts = s.Split (')');

StringBuilder result = new StringBuilder ();

foreach( string part in parts )
{
   result.Append (part + ") and ");
}
Console.WriteLine (result.ToString ());

Pero tal vez hay mejores soluciones ...

De todos modos, ¿cómo es que recibes esa cadena (que se parece a una parte de una cláusula where de una instrucción sql) de esa manera?

Respondida el 12/03/2009 a las 08:13
fuente por usuario Frederik Gheysels

votos
0
System.Text.RegularExpressions.Regex.Replace(
    mystring, "\\)(?=.+$)", ") and ");

La .+$parte de la expresión regular asegura que el paréntesis de cierre no está al final de la línea. Si vas a hacer esto a menudo, te recomendaría crear y persistir un Regexobjeto para el patrón.

// Do this once somewhere:
System.Text.RegularExpressions.Regex insertAndPattern =
    new System.Text.RegularExpressions.Regex("\\)(?=.+$)");

// And later:
insertAndPattern.Replace(mystring, ") and ");

EDITAR: Me acabo de dar cuenta de que soy un idiota. Se corrigieron los patrones anteriores de "\\).+$"a "\\)(?=.+$)", de modo que la .+$parte no se incluye (y por lo tanto se reemplaza) en la coincidencia.

Respondida el 12/03/2009 a las 08:49
fuente por usuario jdmichal