Bonne journée, j'ai posé cette question avant mais je n'étais pas spécifique pour ce que je m'excuse. Je fais un simple jeu d'échecs windForms en utilisant des boîtes d'image comme chaque cellule. Selon les règles, le Roi ne peut pas bouger si la cellule est visée par une pièce ennemie. Pour implémenter cette règle, j'utilise la propriété pictureBox.Tag et lui assigne une chaîne. Si une pièce le cible, j'utilise pictureBox1.Tag += "D"
D comme Danger. Donc, si deux pièces le ciblent, le Tag
deviendra "DD"
. Ma question est la suivante - Comment puis-je supprimer un seul 'D'
de ma chaîne? Puis-je utiliser l'opérateur -=
ou quelque chose de similaire?Comment supprimer un caractère d'une chaîne de caractères?
Répondre
Je pense que cela résoudrait votre problème
public void Remove (PictureBox pb){
if (pb.Tag.ToString().Length > 1) {
// Greater than 1 because we need to keep one D in case of DD,
String temp = pb.Tag.ToString();
pb.Tag = temp.Substring(0, temp.Length - 2);
}
else
pb.Tag = "D";
// Tag equals D because if there is only one D, it won't be deleted
}
En supposant:
string a = "ABCDEFG";
Pour enlever le premier 'D':
a = a.Remove(a.IndexOf('D'), 1);
Pour supprimer tous les « D'de
a = new string(a.Where(c => c != 'D').ToArray());
Bien que je recommande la recherche à l'approche orientée objet. Ensuite, vous pouvez facilement stocker des références aux véritables joueurs qui ciblent un spot, donc facile à modifier (pas besoin de recalculer).
utiliser simplement la méthode Replace, en remplacement de votre personnage (comme une chaîne) avec une chaîne vide:
string s = "Daddy comes back";
s = s.Replace("D", string.Empty); // Replace ALL D'
Console.WriteLine(s);
Sinon, si vous connaissez déjà l'index des caractères à supprimer, ou si vous avez besoin supprimer un seul caractère, pensez à utiliser les méthodes Substring.
s = s.Substring(i, i+1); // Remove the character at position i
Notez que C# string
est immuable: dans les deux cas, une nouvelle instance de chaîne est retournée.
Cela ne supprimera-t-il pas tous les 'D' de la chaîne? – user3552161
Oui, il le ferait. Utilisez Substring pour supprimer seulement un caractère spécifique à une position donnée, voir mon édition – quantdev
Vous pouvez utiliser une expression régulière pour spécifier pour supprimer une seule instance d'un personnage:
Regex regex = new Regex(Regex.Escape("D"));
string output = regex.Replace("ABCDDEFG", string.Empty, 1);
Avec tout le respect dû, je pense que l'utilisation d'expressions régulières est une exagération pour cette tâche particulière. – Neolisk
J'espère juste qu'il ne va pas dans le code sensible à la performance – quantdev
Je respecte vos commentaires les gars, bien que dans le cas de la défense: @Neolisk, je suppose que c'est une question d'opinion. Je pense que c'est à peu près aussi simple que n'importe quelle opération regex peut être, et comme le PO dit qu'il apprend, c'est un moyen simple d'être introduit dans un outil utile. Quantdev, je ne pense pas qu'il y ait un problème de performance appréciable ici, surtout compte tenu de la nature du programme décrit par le PO. En tout cas, des commentaires équitables à la fois. – PulseLab
Bien qu'il y ait des moyens Ware faire ce que vous » réessayer de faire, ce que vous voulez vraiment faire est de manipuler la chaîne de fossé, et d'utiliser autre chose. Par exemple, créez une classe entière pour cette méta-information carrée. Quelque chose comme
public class SquareInfo
{
public int Danger; //the number of pieces that can move to this square.
//... Any other information about the square you want.
}
Ensuite, vous pouvez récupérer le tag comme:
var myInfo = (SquareInfo)myBox.Tag;
if (myInfo.Danger > 2)
{
//do something
}
Et ainsi de suite.
- 1. Comment supprimer un caractère entre deux caractères dans une chaîne?
- 2. Supprimer un caractère d'une chaîne
- 3. Supprimer un caractère de la chaîne realbasic
- 4. Supprimer un caractère spécifique d'une chaîne
- 5. Supprimer un caractère d'une chaîne
- 6. supprimer/supprimer un caractère spécifique de la chaîne dans JAVA
- 7. Comment faire pour supprimer un caractère spécial d'une chaîne
- 8. Supprimer les caractères avant le caractère "."
- 9. Supprimer un caractère de la chaîne?
- 10. Supprimer un caractère de la chaîne
- 11. Comment faire pour supprimer un caractère spécial d'une chaîne avec plusieurs types de caractères spéciaux
- 12. Comment supprimer des caractères de la fin d'une chaîne jusqu'à ce que j'atteigne un certain caractère?
- 13. Comment supprimer des caractères avant un caractère spécifique?
- 14. comment supprimer un caractère?
- 15. Supprimer & # 58 caractères de chaîne
- 16. supprimer un certain caractère spécial d'une chaîne par javascript
- 17. Comment puis-je supprimer un caractère de chaîne en PHP?
- 18. Supprimer Après un caractère particulier
- 19. Python: Supprimer un caractère d'une chaîne
- 20. supprimer les caractères de chaîne
- 21. Modifier chaque caractère d'une chaîne de caractères
- 22. Supprimer '|' caractère spécial d'une chaîne
- 23. Comment supprimer les caractères de cette chaîne?
- 24. Bash: Supprimer les caractères jusqu'à un certain caractère de la chaîne
- 25. Comment supprimer le second caractère d'une chaîne?
- 26. Comment supprimer les caractères spéciaux de la fin d'une chaîne?
- 27. Manipulation de chaîne insérer un caractère tous les 4 caractères
- 28. caractère Supprimer "dans une chaîne
- 29. Supprimer les caractères aléatoires de la chaîne
- 30. supprimer les caractères d'une chaîne après un point (.)
Jetez un oeil à la méthode SubString. – Transcendent
Conservez-vous une grande quantité d'informations méta dans ces chaînes ou est-ce juste le D? Si c'est juste le D alors faites un = pas a + =. – stonemetal
Je suis en train d'apprendre la programmation, j'ai cherché sur le web et je n'ai pas trouvé ce dont j'avais besoin. Si je pose une question évidente, donnez-moi une sorte de réponse ou au moins un lien vers une réponse. – user3552161