2010-11-18 4 views

Répondre

44

Si vous essayez de nombre le nombre de matches, alors vous utilisez la mauvaise méthode. Split est conçu pour prendre une chaîne et la couper en bits, mais comme vous l'avez remarqué, s'il n'y a pas de correspondance, alors elle renvoie le tout. Je pense que vous voulez utiliser String.scan à la place:

message.scan(/\n.* at.* XXXXXXXX wrote:.*/m).size 
+0

Merci, mais d'où vient la longueur? IE si des correspondances ont été trouvées. J'ai juste besoin de savoir si un match a été trouvé ou non. – AnApprentice

+0

Aussi, pouvez-vous définir une expression rationnelle comme ça, je reçois une erreur – AnApprentice

+0

Vous devriez être en mesure de définir une expression rationnelle comme ça (travaille pour moi). Désolé, juste pour vérifier, êtes-vous en train de dire que vous voulez littéralement savoir si cela correspond? (c'est-à-dire que vous n'êtes pas intéressé par l'extraction du texte?) –

1

Bien divisé va retourner un tableau. Donc, vous pouvez simplement vérifier la longueur> 1

m = message.split(/\n.* at.* XXXXXXXX wrote:.*/m) 
if m.length > 1 
    return m.first 
else 
    return nil 
end 
+0

@Doon, désolé juste essayé ... il renvoie toujours m.first. Des idées? – AnApprentice

+0

Voici ce que j'ai: m = to.split (./@ Mysite.com * /) si m.length> 1 retour m.first.strip autre retour nul fin – AnApprentice

+0

On dirait que tout est m.length faire est de compter les caractères? – AnApprentice