Comment capitaliser lettre seulement en début de phrase, et le mot suivant est normal
J'utilise ceci:
Static PreviousLetter As Char
If PreviousLetter = " "c Or TextBox1.Text.Length = 0 Then
e.KeyChar = Char.ToUpper(e.KeyChar)
End If
PreviousLetter = e.KeyChar
Mais le résultat est toujours:
Good Night Every Body
Comment puis-je tirer parti juste la première lettre de la phrase, en laissant les autres mots de la normale? Le résultat que je veux c'est:
Good night every body
OriginalL'auteur walk.this_way | 2013-12-31
Vous devez vous connecter pour publier un commentaire.
Ne pas utiliser une variable statique de tenir la précédente char. Il n'est pas nécessaire et les mauvaises pratiques en général.
Puis, même si c'est un peu difficile de votre question, en supposant que vous souhaitez effectuer la modification sur le texte de
TextBox1
, vous voudrez probablement pour définir le texte de la TextBox après modification.Ainsi, une solution pourrait ressemble à ceci:
Si vous souhaitez mettre en majuscule la première lettre et la force de minuscules le reste, vous pouvez modifier le code ci-dessus comme suit:
Mise à JOUR
Sur la base des commentaires, si vous voulez faire ce changement à la volée (c'est à dire. à mesure que l'utilisateur tape dans la zone de texte), alors vous aurez également besoin de manipuler le curseur. Essentiellement, vous avez besoin de stocker la position du curseur avant de changer le texte, puis restaurer la position après le changement.
Aussi, je voudrais effectuer ces changements dans la
KeyUp
événement, par opposition à laKeyPress
événement. LeKeyUp
qui se passe après la zone de texte a enregistré le changement en réponse à la pression sur la touche.si vous souhaitez effectuer le changement à la volée (c'est à dire. que l'utilisateur tape le texte) que vous aurez également besoin de manipuler le curseur. Je vais mettre à jour la réponse dans un deuxième..
consultez la mise à jour de réponse
thankssss donc muuuuuch master @Miky 😀
OriginalL'auteur Mike Dinescu
TextInfo.ToTitleCase
Méthode Convertit la chaîne de caractères spécifiée à titre de cas de.Vous devez convertir l'ensemble du texte en minuscules premier sinon ça ne fonctionne pas comme prévu:
OriginalL'auteur Muhammad Alnahrawy
On peut certainement le faire.
RegularExpressions sont le moyen le plus direct...semblable à ce que vous faites, et vous pouvez les combiner.
Beaucoup de gens ont déjà regardé. En voici un:
Mise en forme des phrases dans une chaîne de caractères à l'aide de C#
Utiliser cette expression régulière chaîne de remplacement à la place de votre personnage.ToUpper.
Ou tout simplement attendre jusqu'à ce que tout le texte est entré et de l'exécuter une fois, comme lorsque le contrôle perd le focus.
OriginalL'auteur Mike M