0
votes

Comment couper des lettres indésirables de la zone de texte en continu?

Je crée un projet dans lequel le programme récupère des données d'un port série et l'affiche dans une zone de texte. Mais avec les données, certains caractères indésirables sont également entrés dans la zone de texte via le port série. J'ai essayé de les couper avec '.trim ()' méthode en l'ajoutant dans l'événement textchanged. Mais je ne pouvais pas obtenir le résultat souhaité. Je veux que les lettres indésirables soient allumées continuellement de la zone de texte et que la méthode doit continuer à fonctionner en arrière-plan. Vous trouverez ci-dessous le code que j'ai essayé: xxx

Veuillez noter que ce sont plusieurs lettres (par exemple, ils pourraient être g, m, a, etc.) Je veux que tous les indésirables soient coupés de la zone de texte directement lorsque Serialport Data est reçue ou après l'entrée du port série.


6 commentaires

Des données d'exemple et des résultats attendus aideraient votre message.


Trim () Ne retirez pas les caractères de la chaîne. Il les supprime depuis le début et la fin. Il serait préférable de filtrer l'entrée avant de l'ajouter à la zone de texte


@Samikuhmonen: PLS me guide pour le faire avec un exemple de code et dans quel événement le placer.


Vérifiez si textboxresults.text.contains ("a") , si oui textboxresults.text.reposer.replace ("a", string.empty) - rapide et sale, vous pouvez Faites-le plus jolie votre moi?)


Avant de l'afficher dans la zone de texte, nettoyez / nettoyez le texte via une méthode et affiche le résultat dans la zone de texte à la place.


Dupliqué possible de Supprimer les caractères de C # String


3 Réponses :


-1
votes

basé uniquement sur les informations que vous avez fournies, ma suggestion est de simplement utiliser xxx

ceci remplace tout char dans la chaîne avec une chaîne vide, de facto les supprimer. Gardez à l'esprit que cela nécessite un appel à remplacer (...) pour chaque caractère indésirable.


3 commentaires

: Dans quel événement dois-je ajouter cela ?? Est textchanged ok ??


Je pense que textchanged est ok. N'oubliez pas de réaffecter le résultat à la zone de texte, comme remplacer () ne change pas la chaîne on l'appelle, mais le retourne plutôt un nouveau: textbox.text.replace ( ...) . Si, pour une raison quelconque, vous souhaitez spécifiquement cibler du texte lorsqu'il est saisi, utilisez le porte-clés, mais cela ne fonctionnera pas avec des pâtes de copie.


D'accord. Être sur cette question. Je vais essayer ce moment et marquer cela comme réponse.



-1
votes

Pas exactement ce que vous avez dit tous, mais quelque chose en regroupant après avoir googling un peu.

string ToBeReplaceCharacters = @"a;b";
foreach(var RepChar in ToBeReplaceCharacters)
{
  textBox1.Text = textBox1.Text.Replace(RepChar.ToString(), "");
}


1 commentaires

Je pense que vous pouvez utiliser des expressions régulières pour une solution plus élégante et compacte ...



1
votes

Vous n'avez pas besoin de itérer à chaque charret d'être éliminé si vous utilisez des expressions régulières.

abc…    Letters

123…    Digits

\d  Any Digit

\D  Any Non-digit character

.   Any Character

\.  Period

[abc]   Only a, b, or c

[^abc]  Not a, b, nor c

[a-z]   Characters a to z

[0-9]   Numbers 0 to 9

\w  Any Alphanumeric character

\W  Any Non-alphanumeric character

\s  Any Whitespace

\S  Any Non-whitespace character
  • "[a-za-z]" Vous éliminerez tout caractère alfabétique li>
  • "[^ bla]" Vous éliminez tout personnage pas égal à 'B', 'L' & 'A'. LI> ul>

    Voici d'autres exemples de motifs: p> xxx pré>

    Plus d'infos ici: p>

    Microsoft Regex.replace référence P>


0 commentaires