2015-12-07 2 views
1

je la chaîne suivante:Convertir la ponctuation non-ascii ascii

un de votre CV non Encyclopædia

Notez le ', é et æ sont non Ascii. Je veux laisser é et æ intact, mais remplacez le 'avec la citation d'ascii: '. Comment faire une telle conversion dans Ruby (pas Rails)?

Ma base de données est UTF8 et je veux toujours stocker les caractères accentués, y compris les kanjis, chinois, etc., mais je veux juste remplacer la ponctuation.

+1

Peut-être qu'il me manque quelque chose, mais quel est le problème avec 's.gsub/['" "'] /, {'"' => '' ',' '' => '\' ',' '' => ' \ '', '"' => '"'} '? – mudasobwa

+0

Parce que la ponctuation pourrait être plus qu'une simple citation, cela pourrait être quelque chose de plus que je ne connaîtrais pas. – Victor

+2

Et "smth you would know" est supposé être changé en _what_? BTW, '/ \ p {Punct} /' va attraper toute la ponctuation. – mudasobwa

Répondre

0

trouvé ce petit bijou qui fonctionne exactement ce que je voulais - https://github.com/qwuen/punctuate

Il suffit de faire .punctuate!:

irb(main):001:0> require 'punctuate' 
=> true 
irb(main):002:0> "Your résumé’s a non–encyclopædia".punctuate! 
=> "Your résumé's a non-encyclopædia" 
1

"’".bytes renvoie l'octets de caractère qui est [226, 128, 153] boucle à travers tous les caractères via each_char et comparer de chaque caractère octets avec [226, 128, 153] puis remplacez ce caractère par l'octet normal qui est [39] [39].pack("c*")