Ist es möglich, nur das "http" der URL, die mit ".png " endet, in "https" zu ändern, wenn eine Zeichenfolge wie die folgende vorhanden ist?
str = 'kkk<a href="http://abcdege/hoge222/bar/t22est.md">aaab.png
bbb<a href="http://abcdege/ho22aage/bddfear/ted2st.png ">aaak
ubotabbbccxcb <a href="http://abcdege/22hoge/b22ar/tfeest.md">aa23a
bbkubotasbbb <a href="http://abcdege/hoffee11ge/bar/test.html">appkub
otapoooabbb<a href="http://abcdege/ho22aage/bddfear/ted2swwt.png ">ab
ddbbb.png'
Ich war ziemlich besorgt. Ich habe versucht, es mit der gsub-Methode (regulärer Ausdruck, Zeichenfolge) von Ruby zu ersetzen.
Also fragte ich mich, ob es eine Möglichkeit gibt, nur einen Teil der Übereinstimmung (URL) zu ersetzen (diesmal http-Teil).
Ich konnte mit der obigen Idee nicht daran denken. Erstens war die Idee, nur die Methode der Methode gsub (regulärer Ausdruck, Zeichenfolge) zu verwenden, möglicherweise nicht gut. Es kann eine Möglichkeit geben, so etwas wie einen Block regulärer Ausdrücke zu verwenden. ** Am Ende konnte ich jedoch eine Prozedur erstellen, die zum gleichen Ergebnis führen würde. ** ** **
Durch 2-Stufen-Sub ersetzen.
".URL beginnend mit png".gsub(http, "https")
Es ist ein Fluss, durch den ersetzt werden muss.
Extrahieren Sie zunächst die URL aus der Zeichenfolge. Ich wollte hier "String # scan" verwenden, aber es scheint, dass es bereits eine Methode namens "URL aus String extrahieren" gibt. .. (zu erstaunlich) Referenz: URL aus String extrahieren - Ruby Tips!
URI.extract(str)
#=> ["http://abcdege/hoge222/bar/t22est.md", "http://abcdege/ho22aage/bddfear/ted2st.png ", "http://abcdege/22hoge/b22ar/tfeest.md", "http://abcdege/hoffee11ge/bar/test.html", "http://abcdege/ho22aage/bddfear/ted2swwt.png "]
Verwenden Sie diese als Nächstes, um sie zu bestimmen und zu ersetzen.
URI.extract(str).each do |uri|
if /.*(\.png)$/.match(uri)
new_uri = uri.sub("http","https")
str = str.sub(uri, new_uri)
end
end
str
#=> "kkk<a href=\"http://abcdege/hoge222/bar/t22est.md\">aaab.png \nbbb<a href=\"https://abcdege/ho22aage/bddfear/ted2st.png\">aaak\nubotabbbccxcb <a href=\"http://abcdege/22hoge/b22ar/tfeest.md\">aa23a\nbbkubotasbbb <a href=\"http://abcdege/hoffee11ge/bar/test.html\">appkub\notapoooabbb<a href=\"https://abcdege/ho22aage/bddfear/ted2swwt.png\">ab\nddbbb.png "
Ich denke, es geht darum, es durch ein zweistufiges Sub zu ersetzen.
Recommended Posts