Existe-t-il une alternative à l'utilisation d'une expression régulière pour détecter si une chaîne contient des caractères majuscules? Actuellement, j'utilise l'expression régulière suivante:
Regex.IsMatch(fullUri, "[A-Z]")
Cela fonctionne bien, mais j'entends souvent le vieil adage "Si vous utilisez des expressions régulières, vous avez maintenant deux problèmes".
Vous pouvez utiliser LINQ:
fullUri.Any(char.IsUpper);
RegEx semble exagéré:
bool containsAtLeastOneUppercase = fullUri.Any(char.IsUpper);
Vous pourriez probablement aussi faire (si vous voulez quelque chose qui fonctionnera dans .NET 1.0 :):
bool hasUpperCase = !fullUri.ToLower().Equals(fullUri);
Bien qu'un regex ce simple fonctionnera probablement très bien
Utilisez Linq!
fullUri.Any(c=> char.IsUpper(c));
Votre expression régulière ne trouvera que ASCII lettres majuscules. De manière pratique, le moteur d'expression régulière .NET est compatible avec Unicode, vous permettant de faire
Regex.IsMatch(fullUri, @"\p{Lu}")
bien que je suppose que dans votre cas, vous ne vous attendez pas à des lettres non ASCII dans votre chaîne (compte tenu de son nom).