Je dois supprimer tous les caractères non numériques avant et arrière. C'est ce que j'ai trouvé. Y a-t-il une meilleure mise en œuvre?Ruby gsub: existe-t-il un meilleur moyen?
puts s.gsub(/^\D+/,'').gsub(/\D+$/,'')
Je dois supprimer tous les caractères non numériques avant et arrière. C'est ce que j'ai trouvé. Y a-t-il une meilleure mise en œuvre?Ruby gsub: existe-t-il un meilleur moyen?
puts s.gsub(/^\D+/,'').gsub(/\D+$/,'')
Au lieu d'éliminer ce que vous ne voulez pas, il est souvent plus clair de sélectionner ce que vous voulez (en utilisant des parenthèses). En outre, cela ne nécessite qu'une seule évaluation regex:
s.match(/^\D*(.*?)\D*$/)[1]
Ou, ce raccourci pratique:
s[/^\D*(.*?)\D*$/, 1]
Peut-être un seul #gsub(/(^\D+)|(\D+$)/, '')
En outre, en cas de doute Rubular il.
+1 pour Rubular! –
Ou peut-être une expression régulière plus simple en fonction du type de chaînes que vous avez. '" abc123def "[/ \ d + /] # =>" 123 "' –