7
votes

Comment majuscule le premier caractère de chaque mot à l'aide d'une regex dans vb.net?

est-il possible de majusculer le premier caractère de chaque mot à l'aide de Regex?

Je vais utiliser ceci dans vb.net (SSIS)


2 commentaires

Vous devriez spécifier un langage de programmation ou demander une réponse agnelle agnostique.


@Jeremy: J'ai ajouté l'équivalent VB.NET à ma réponse


9 Réponses :


0
votes

Vous pouvez le faire, mais il s'agit d'une fonction assez courante dans la plupart des langages de programmation. Par exemple, la fonction est UCWords ($ Word) dans PHP.


1 commentaires

Je n'ai jamais utilisé php, mais ne vous souvenez pas de cette méthode dans d'autres langues que j'ai utilisées, bien que je puisse tout ce que je n'aurais tout simplement pas remarqué.



4
votes
 s/\b(\w+)\b/ucfirst($1)/ge

1 commentaires

Nice et facile - s / \ b (\ w +) / \ u $ 1 / g ou s / \ b (\ w) / \ u \ 1 / g pour court. Malheureusement, la question spécifie maintenant vb.net, de sorte que cette réponse perl n'est plus pertinente ...



2
votes

pas dans "pure" regex, mais la plupart des implémentations spécifiques à la plate-forme ont un moyen de le faire:

Par exemple, en Python: P>

import re
re.compile(r'\b\w').sub(lambda x: x.group(0).upper(), 'hello')


0 commentaires

11
votes

EDIT: STRT> VB.NET Code ajouté ci-dessous

string input = "The quick brown fox jumps over the lazy dog";
string pattern = @"\b(\w|['-])+\b";
string result = Regex.Replace(input, pattern,
                    m => m.Value[0].ToString().ToUpper() + m.Value.Substring(1));


2 commentaires

Dans quels scénarios sont Lambdas non disponibles dans vb.net et / ou c # s'il vous plaît?


@Magnussmith Lorsque vous utilisez les versions qui ne les ont pas soutenues, nommément C # 2.0 et VB.NET 8.0 (généralement associée à Visual Studio 2005 et .NET 2.0).



5
votes

.NET a une prise en charge intégrée. Voir textinfo.totitlecase pour la documentation.

Mon code contient des méthodes d'extension pour C #. Je suppose que vb.net les a aussi, mais je ne sais pas assez bien vb.net pour les convertir moi-même. xxx


0 commentaires

29
votes

Pourquoi ne pas simplement utiliser l'inBuge textinfo.totitlecase ( ) Méthode déjà dans la framework .NET?

string capitalized = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase("this string should be capitalized!");


2 commentaires

Ne savait pas à ce sujet. Pourrait être une excellente solution pour moi. Merci!


Juste une note rapide ici. Pour que la première lettre de chaque mot est capitalisée, vous devez d'abord convertir la chaîne d'origine en minuscules. Ma chaîne d'origine était toutes des capuchons et .totitlecase ne semblait pas avoir un effet.



6
votes
Dim s As String = "your string"
Dim s2 As String = StrConv(s, VbStrConv.ProperCase
MessageBox.Show(s2)

0 commentaires

2
votes

Utiliser propérase fonction: xxx

          Â


0 commentaires

0
votes

Faites cela sur Clé Appuyez sur l'événement de votre zone de texte.

If e.KeyChar <> ChrW(Keys.Back) Then
            If txtEname.Text = "" Then
                e.KeyChar = UCase(e.KeyChar)
            End If


        End If


0 commentaires