2010-11-19 7 views
1

Bonjour Je veux supprimer le dernier mot de ma phrase en C#. Voici ma requête:couper la chaîne à la fin de la chaîne

"SELECT * FROM People WHERE City = @City AND County = @County AND" 

Je veux supprimer le dernier ET par programme, comment puis-je faire cela? Merci

Répondre

1
var query = "SELECT * FROM People WHERE City = @City AND County = @County AND"; 
var scrubbed = query.Substring(0, query.Length - 4); 
1

Si le dernier mot va toujours être "ET":

if (yourString.EndsWith(" AND")) 
    yourString = yourString.Remove(yourString.Length - 4); 

Ou, si vous avez besoin de tronquer tout au-delà de l'espace final:

int index = yourString.LastIndexOf(' '); 
if (index > -1) 
    yourString = yourString.Remove(index); 

(Bien que, as Donnie says , la vraie réponse correcte est de ne pas ajouter le mot final superflu à votre chaîne en premier lieu.)

21
string myString = "SELECT * FROM People WHERE City = @City AND County = @County AND"; 
Console.WriteLine(myString.Substring(0, myString.LastIndexOf(' '))); 

Mais vous pouvez également envisager de construire votre AND-clause sans le dernier ET depuis le début.

List<string> andConditions = new List<string>(); 
andConditions.Add("City = @City"); 
andConditions.Add("County = @County"); 
string myString = "SELECT * FROM People WHERE " + string.Join(" AND ", andConditions); 
+0

+1, m'a devancé –

+0

+1, Quelle façon ingénieuse de "_removing_" dernier 'ET' ... Je l'ai toujours ajouté dans la boucle (myString + = condition + "AND"; ') puis ajouté un Trim en dehors de ma boucle pour enlever la graisse, mais c'est beaucoup plus beau! :) –

+0

@myermian, Si vous avez 0 conditions, vous pouvez aussi ajouter le '' WHERE' 'dans un' if (addConditions.Count> 0) {...} ' –

2

multiples méthodes pour fixer la chaîne donnée déjà. Cela ressemble à du SQL généré dynamiquement, donc, la solution la plus sensée dans mon esprit est de ne jamais avoir le AND final ici. Cela peut être fait en comptant le nombre de paramètres que vous avez ajouté à la clause where, et en ajoutant au and pour chaque paramètre après le premier.

0

aussi, peut se faire via

//............ 
string query = SELECT * FROM People WHERE City = @City AND County = @County AND"; 
char[] charsAND = { 'A', 'N', 'D'}; 
char[] charsOR = { 'O', 'R'}; 
query = query.Trim().TrimEnd(charsAND).TrimEnd(charsOR); 
// 
+0

Vous semblez avoir oublié une double citation. – nalply

+0

Cela fait un travail différent. Votre réponse peut être rendue utilisable comme 'query.TrimEnd ('D'). TrimEnd ('N'). TrimEnd ('A')'; – nawfal

0

Une autre façon:

string myString = "SELECT * FROM People WHERE City = @City AND County = @County AND"; 
myString = myString.TrimEnd(" AND".ToCharArray()); 
Questions connexes