J'ai un DetailsView
avec un TextBox
et je veux que les données d'entrée soient toujours sauvegardées avec la PREMIÈRE LETTRE EN MAJUSCULE.
Exemple:
"red" --> "Red"
"red house" --> " Red house"
Comment puis-je atteindre ces performances maximales ?
REMARQUE :
Sur la base des réponses et des commentaires sous les réponses, de nombreuses personnes pensent que cela demande de mettre en majuscule tous les mots de la chaîne. Par exemple, => Red House
ce n'est pas le cas, mais si c'est ce que vous cherchez , cherchez une des réponses qui utilise TextInfo
la ToTitleCase
méthode de. (REMARQUE: ces réponses sont incorrectes pour la question réellement posée.)
Voir le document TextInfo.ToTitleCase pour les mises en garde (ne touche pas les mots en majuscules - ils sont considérés comme des acronymes; peuvent être des lettres minuscules au milieu des mots qui abaissé, par exemple "McDonald" => "Mcdonald"; non garanti pour gérer toutes les subtilités spécifiques à la culture concernant les règles de capitalisation.)
REMARQUE :
La question est ambiguë de savoir si les lettres après le premier doivent être forcées en minuscules . La réponse acceptée suppose que seule la première lettre doit être modifiée . Si vous voulez forcer toutes les lettres de la chaîne à l'exception de la première à être en minuscules, recherchez une réponse contenant ToLower
et ne contenant pas ToTitleCase .
public static class StringExtensions
{
public static string FirstCharToUpper(this string input) =>
input switch
{
null => throw new ArgumentNullException(nameof(input)),
"" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
_ => input.First().ToString().ToUpper() + input.Substring(1)
};
}
public static class StringExtensions
{
public static string FirstCharToUpper(this string input)
{
switch (input)
{
case null: throw new ArgumentNullException(nameof(input));
case "": throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input));
default: return input.First().ToString().ToUpper() + input.Substring(1);
}
}
}
public static string FirstCharToUpper(string input)
{
if (String.IsNullOrEmpty(input))
throw new ArgumentException("ARGH!");
return input.First().ToString().ToUpper() + String.Join("", input.Skip(1));
}
EDIT : Cette version est plus courte. Pour une solution plus rapide, jetez un œil à la réponse d'Equiso
public static string FirstCharToUpper(string input)
{
if (String.IsNullOrEmpty(input))
throw new ArgumentException("ARGH!");
return input.First().ToString().ToUpper() + input.Substring(1);
}
EDIT 2 : Probablement la solution la plus rapide est celle de Darren (il y a même un benchmark) bien que je changerais sa string.IsNullOrEmpty(s)
validation pour lever une exception car l'exigence d'origine s'attend à ce qu'une première lettre existe afin qu'elle puisse être en majuscule. Notez que ce code fonctionne pour une chaîne générique et pas particulièrement sur les valeurs valides du Textbox
.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots