2010-11-18 7 views
0

Bei einem TextblockSchienen, eine Zeichenfolge zu finden und Kürzen einen Textblock

yada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yadayada yada 

On Tue, Nov 16, 2010 at 9:23 PM, Tekkub <[email protected]> wrote: 

Mit Rails3, ich würde gerne wissen, da ein Textblock, wie eine Zeichenfolge wie zu finden:

On Tue, Nov 16, 2010 at 9:23 PM, Tekkub <[email protected]> wrote: 

Und dann erstellen Sie eine neue Variable mit nur den Text oberhalb dieser übereinstimmenden Zeichenfolge.

Dank

...

Ideen: 1. Zunächst müssen die Zeichenfolge geben, den Tag generieren, Monat:

On Tue, Nov 16, 2010 at 9:23 PM, Tekkub <[email protected]> wrote: 
  1. diese Zeichenfolge dann mit einem FIND zu tun ? und einige, wie eine LINKE anwenden?
+1

Startet es immer mit 'On' und endet mit einem Doppelpunkt? – rwilliams

+0

Es sollte, es ist eine E-Mail-Antwort – AnApprentice

+1

Verwenden Sie diese Zeile als Trennzeichen für den Text darüber? Was passiert, wenn der Zitat-String (und der zitierte Text) * über * dem eigentlichen Fließtext steht? – Eric

Antwort

2

So könnte man dies mit tun, um die scan() Methode von Rubys String Klasse und eine regex. Diese Methode ist spröde, da sie sich auf die Tatsache stützt, dass On immer die Zeichenfolge beginnt, die Sie suchen, und eine : wird immer enden. Aber wenn Sie sagen "es sollte", dann wird das gut funktionieren. In diesem Codebeispiel wird davon ausgegangen, dass @emailreply eine Instanzvariable ist, die den gesamten Text der E-Mail-Antwort als Zeichenfolge enthält, und ein Array mit 1 zurückgibt, das die Extrakte enthält. scan() gibt ein Array aller Regex-Übereinstimmungen aus der Zeichenfolge zurück.

def extract_info 
    extracts = @emailreply.scan(/On.*?:/) 
    extracts 
end 
+0

Hmmm danke Alex, aber ich würde lieber die ganze Schnur bauen, um sicher zu sein, und dann ein passendes finden. Ist das möglich? – AnApprentice

+1

@AnApprentice Ich glaube schon. Würde es Ihnen etwas ausmachen, mehr darüber zu erklären, was Sie damit meinen, dass Sie zuerst die gesamte Saite aufbauen? Ist diese ganze Zeichenfolge nicht Teil einer E-Mail? – Alex

+0

@Alex, danke. Ya so ist das Ziel, eine sehr positive Übereinstimmung mit dieser Saite zu machen. "Am Dienstag, 16. November 2010 um 21:23 Uhr schrieb Tekkub :" um sicher zu gehen, was ich schnappe und dann injiziere in die Datenbank ist ein Kommentar. Falsche Positive zu vermeiden ist sehr wichtig. Also die Idee ist, da wir die aktuellen Daten kennen (heute ist der 17. November), kann ich das verwenden, um zu finden: "Am, Di, 16. November 2010 um X: XX PM, XXXXXX <[email protected]> schrieb:" Die Idee ist, dass ich bis zum 16. November 2010 und der E-Mail-Adresse des Benutzers übereinstimmen kann. Hilft das? – AnApprentice

Verwandte Themen