Je cherche à vérifier si une chaîne est toutes des capitales dans des rails. Comment allais-je faire ça? P>
J'écris ma propre méthode d'assistant de pluralisation personnalisée et je voudrais passer des mots comme "mot" et parfois "mot" - je veux tester si ma mot est toutes des casquettes afin que je puisse retourner "mots" - avec un la capitale "s" à la fin si le mot est pluriel (vs "mots"). p>
merci! p>
3 Réponses :
Faites ceci:
# In the code below `upcase` is required after `str.pluralize` to transform # DOGs to DOGS str = str.pluralize.upcase if str == str.upcase
C'est tellement joliment idiomatique! N'avez-vous à l'esprit que pour les très longues chaînes, cela entraînera des pénalités de temps et de mémoire, car elles nécessitent une autre chaîne et une autre chaîne et traversez-la deux fois. Les solutions régulières-expressions sont plus optimales.
ou ceci: E.g.: p>
Ne fonctionne pas lorsque la chaîne a autre chose que A-Z dedans. Dög ou cät ou Dog123 par exemple.
Plutôt vrai. Si l'internationalisation est un problème, le str == str.uppcase code> pourrait mieux fonctionner, mais cela dépend de la définition de upcase code>. Sur mon système, "COÖPERATION" .UPCASE code> est "COÖPERATION" code>, qui n'aide pas vraiment. Ruby 1.9 est plus conscient de l'encodage; Pour ceux qui sont sur 1,8, il y a le gemme Unicode: rubygems.org/gems/unicode
Ancrages inappropriés, mis à part des problèmes susmentionnés, il correspondra aux chaînes telles que "inférieur \ Nupper" code>
Grâce aux expressions régulières, c'est très simple. Il suffit d'utiliser Selon votre besoin exactement: p> ruby doc: http : //wwww.ruby-doc.org/core-2.1.4/regexp.html P> p> [[: supérieure:]]] code> classe de caractères qui permet toutes les lettres majuscules, y compris mais non limitées à celles présentes dans ASCII-8.
duplicaté possible de Comment puis-je vérifier un Le mot est déjà tous en majuscule dans Ruby?
Ah Non, cette question a été posée avant que l'une, donc si quelque chose qui question devrait être fermé comme dup de celui-ci.
@philant - Vous ne devez pas voter à proximité comme formulaire en double forme des deux côtés ... juste d'un côté.
@TaryNeast ouais je sais, mais je ne pouvais pas l'annuler. Merci.