Zuallererst, vollständige Offenlegung, arbeite ich an einer Hausaufgabe. Das Beispiel, das ich gebe, ist nicht das genaue Problem, aber wird mir helfen zu verstehen, was ich tun muss. Ich suche keine löffelweise Antwort, sondern um zu verstehen, was vor sich geht.Ruby Regex gsub! ohne zu verwenden, wenn
Ich versuche, eine Zeichenfolge zu nehmen wie:
"The Civil War started in 1861."
"The American Revolution started in 1775."
In diesem Beispiel würde Ich mag die gleiche Zeichenfolge zurück, aber mit dem entsprechenden Jahrhundert in Klammern nach
"The Civil War started in 1861. (Nineteenth Century)"
"The American Revolution started in 1775. (Eighteenth Century)"
Ich bin in der Lage zu gruppieren, was ich brauche mit der folgenden Regex
text.gsub!(/([\w ]*)(1861|1775).?/, '\1\2 (NOT SURE HERE)')
Es wäre einfach mit Gruppierung zu sagen if \2 == 1861
anhängen geeignete Jahrhundert, aber die Spezifikationen sagen nein if
Aussagen verwendet werden kann und ich bin sehr verloren. Auch der Wechsel, den ich in diesem Beispiel verwendet habe, funktioniert nur für die aufgeführten 2 Jahre und ich weiß, dass eine bessere Form der Bereichsanpassung verwendet werden müsste, um ganze Jahrhunderte im Gegensatz zu diesen 2 einzelnen Jahren zu erfassen.
Das ist ein netter Weg, es mit den Jahrhunderten zu tun, aber vielleicht ein armes Beispiel meinerseits. Sagen wir, es muss das geschriebene Wort sein, wie "Neunzehntes Jahrhundert" statt 19.. Ich versuche mehr herauszufinden, wie ich etwas völlig anderes als den aufgenommenen Text ersetzen kann.Ich stelle nicht das genaue Problem geschrieben, weil ich nicht möchte, dass die Antwort um das Netz schwebt – kennedyl
Die Blockform von 'gsub' reicht nur ein Argument zum Block, das volle Match. Um auf die Captures zugreifen zu können, müssen Sie '$ 1',' $ 2' usw. verwenden. –
@Jordan, behoben Danke. – ndn