.NET méthode pour convertir une chaîne en majuscule en début de phrase
Je suis à la recherche d'une fonction pour convertir une chaîne de texte qui est en Majuscule pour SentenceCase. Tous les exemples que je peux trouver de transformer le texte en TitleCase.
De phrase dans un sens général
décrit la façon dont la capitalisation
est utilisé dans une phrase. Phrase
cas décrit également la norme
la capitalisation d'une phrase anglaise,
c'est à dire la première lettre de la phrase
est en majuscule, le reste étant
les minuscules (à moins exigeant
la capitalisation pour une raison spécifique,
par exemple, les noms propres, sigles, etc.).
Quelqu'un peut me pointer dans la direction d'un script ou une fonction pour SentenceCase?
- Est la chaîne de caractères d'une phrase, ou de phrases?
- stackoverflow.com/questions/2135863/...
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas quelque chose d'intégré .NET - cependant, c'est un de ces cas où l'expression régulière de traitement effectivement peut bien travailler. Je voudrais commencer par la conversion de l'ensemble de la chaîne de caractères en minuscules, puis, en première approximation, vous pouvez utiliser les regex pour trouver toutes les séquences comme
[a-z]\.\s+(.)
, et l'utilisationToUpper()
pour convertir le groupe capturé en majuscules. LeRegEx
classe a une surchargeReplace()
méthode qui accepte unMatchEvaluator
délégué, qui vous permet de définir comment remplacer les paires de valeur.Voici un exemple de code de cette au travail:
Ce pourrait être améliorée dans un certain nombre de façons différentes afin de mieux correspondre à une plus grande variété de structures de phrases (et pas seulement celles se terminant par une lettre+période).
Cela fonctionne pour moi.
Mr. and Mrs. Smith have $1,000.00 each; they live on Magnolia Blvd. in the blue house.
Il est construit en
ToTitleCase()
fonction qui va être étendu pour prendre en charge de multiples cultures dans l'avenir.Exemple à partir de MSDN:
Alors qu'il est généralement utile, il a quelques limitations importantes:
Source: http://msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase.aspx
J'ai trouvé ce l'échantillon sur MSDN.
Si la chaîne d'entrée n'est pas une phrase, mais beaucoup de phrases, cela devient un problème très difficile.
Expressions régulières se révélera un outil précieux, mais (1), vous aurez à les connaître assez bien pour être efficace, et (2) ils ont peut-être pas jusqu'à faire le travail tout seul.
Considérer cette phrase
Cette phrase ne commence pas par une lettre, il a un chiffre, divers signes de ponctuation, un nom propre, et un
.
dans le milieu.Les difficultés sont énormes, et c'est l'une phrase.
L'une des choses les plus importantes lors de l'utilisation de RegEx est de "connaître vos données." Si vous connaissez l'étendue de types de phrases que vous devrez faire face, votre tâche sera plus facile à gérer.
Dans tous les cas, vous aurez à faire joujou avec votre mise jusqu'à ce que vous êtes satisfait de vos résultats. Je suggère d'écrire quelques tests automatisés avec des exemples de données, comme vous travailler sur votre application, vous pouvez exécuter les tests régulièrement pour voir où vous êtes l'obtention de près et où vous êtes encore à côté de la plaque.
Si vous souhaitez phrase de cas d'une chaîne de caractères contenant des signes de ponctuation autres que les périodes:
C'est ce que j'utilise (VB.NET). Il travaille dans plus les situations, y compris:
phrases commençant par les caractères autres que A-Z. Par exemple, il fonctionnera pour: "si vous voulez de 100,00 $alors demandez-moi".
Mais comme pour les noms propres et les acronymes, eh bien... il y a toujours des situations dans la langue anglaise, où la ponctuation n'est pas aussi simple. Par exemple, ce script ne sont pas en mesure de détecter des points de suspension ("..."), ou des abréviations (par exemple: "M. Jones a vécu sur Magnolia Blvd. près de Chris à la "maison").
Pour résoudre le problème complètement, vous aurez besoin de créer un dictionnaire de toutes les abréviations/ponctuation de la langue, et de garder le dictionnaire up-to-date! Après avoir tenu compte de ce que la plupart seront heureux avec un compromis, sinon il suffit d'utiliser Microsoft Word.