2016-06-22 1 views
2

Essayer de supprimer l'apostrophe dans une chaîne. En utilisant le code ci-dessous j'ai enlevé l'apostrophe et les espaces, quelqu'un peut-il m'aider à le réparer alors je supprime l'apostrophe?gsub! nettoyer la chaîne, en supprimant l'apostrophe

def clean_uniname(text) 
return text.gsub!(/\s|"|'/, '') 
end 
+1

Les apostrophes et les guillemets simples utilisent le même symbole mais ont des significations différentes. Supposons que votre chaîne était '' Elle a dit, 'je ne sais pas' "'. Voulez-vous obtenir "" Elle a dit, 'Je ne sais pas' "(en supprimant seulement l'apostrophe) ou" Elle a dit, je ne sais pas "(en supprimant le symbole' "'" ') ou autre chose? Si c'est le premier, c'est un peu compliqué car certains mots ont une apostrophe après le dernier caractère ("bro '", ou la forme possessive pour les mots se terminant par un "s", comme "Chris") et quelques mots ont apostrophe multiple ("couldn't've"). –

Répondre

3

\s signifie "caractère espace", et " représente un devis. Si vous ne voulez pas ceux dans votre expression régulière, tirez-les. Pour l'aide au débogage, essayez Rubular pour le test.

Cela signifie que votre code doit être:

def clean_uniname(text) 
    text.gsub!(/\s|"|'/, '') 

    text 
end 

Il convient de noter que gsub! rendements nil si aucune modification n'a été apportée si un retour explicite de text est nécessaire ici si vous utilisez la valeur de retour.

3

Cela devrait faire l'affaire:

def clean_uniname(text) 
    text.gsub!("'", '') 
    end 
+0

l'a essayé et j'ai reçu cette erreur: testing.rb: 41: dans 'block in process_unis ': méthode non définie' []' pour nil: NilClass (NoMethodError) – Akamaru

+0

Cette erreur n'est pas liée au problème que vous avez mentionné comme vous peut voir ci-dessous: 2.2.1: 001> string = "Je suis une chaîne" => "Je suis une chaîne" 2.2.1: 002> string.gsub! ("'",' ') = > "Im a string" 2.2.1: 003> Si vous postez plus de code, je peux vous aider avec l'autre question, mais vous feriez mieux d'ouvrir un nouveau numéro et de marquer ma réponse pour ce problème puisque ma réponse résout la question tu as demandé. –