Come inserire un valore in una stringa in determinate posizioni c #

voti
3

Ho un programma che ottiene una stringa da un metodo. Voglio sapere come inserire un valore di stringa per quella stringa in certe posizioni.

Per esempio:

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

Qui, come faccio a inserire il valore stringa e dopo ogni occorrenza del carattere ')' a mystring?

PS. Se possibile, includere anche il modo di non inserire nel modo giusto alla fine.

È pubblicato 12/03/2009 alle 20:08
fonte dall'utente
In altre lingue...                            


5 risposte

voti
5

Probabilmente il più semplice:

mystring = mystring.Replace(")", ") and ");
mystring = mystring.Substring(0, mystring.Length - " and ".Length);
Risposto il 12/03/2009 a 20:13
fonte dall'utente

voti
2

Se vuoi dire, e sto prendendo la stringa letterale e come viene:

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

Poi si può solo fare:

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

Che si tradurrebbe in:

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

Questo è presumendo non si vuole un finale "e".

Risposto il 12/03/2009 a 20:15
fonte dall'utente

voti
2

Si potrebbe ottenere questo risultato con sostituire ..

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

Con il risultato di:

"column1 in('a','b') and column2 in('c','d') and column3 in('e','f')"
Risposto il 12/03/2009 a 20:14
fonte dall'utente

voti
2

Le stringhe sono immutabili, quindi non si può 'solo' cambiare il valore di tale stringa. Ogni modifica che si vuole fare in una stringa, conduce ad una nuova istanza di una stringa.

Questo è forse come si potrebbe ottenere quello che vuoi:

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 ());

Ma forse ci sono soluzioni migliori ...

In ogni caso, come mai si riceve la stringa (che assomiglia a una parte di una clausola WHERE di un'istruzione SQL) in quel modo?

Risposto il 12/03/2009 a 20:13
fonte dall'utente

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

La .+$parte dell'espressione regolare assicura che la parentesi di chiusura non è alla fine della linea. Se avete intenzione di fare questo, spesso, mi consiglia di creare e persistere un Regexoggetto per il modello.

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

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

EDIT: appena realizzato che sono un idiota. Fissa i modelli sopra da "\\).+$"a "\\)(?=.+$)", in modo che la .+$parte non è inclusa (e quindi sostituito) nella partita.

Risposto il 12/03/2009 a 20:49
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more