Est-il possible de changer uniquement le http
de l'URL se terminant par .png
en https
s'il y a une chaîne de caractères comme celle-ci?
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'
J'étais un peu inquiet. J'ai essayé de le remplacer en utilisant la méthode gsub (expression régulière, chaîne) de ruby.
Donc, je me suis demandé s'il y avait un moyen de ne remplacer qu'une partie de la correspondance (URL) (partie http cette fois).
Je ne pouvais pas y penser avec l'idée ci-dessus. En premier lieu, l'idée d'utiliser uniquement la méthode de la méthode gsub (expression régulière, chaîne) n'a peut-être pas été bonne. Il peut y avoir un moyen d'utiliser quelque chose comme un bloc d'expressions régulières. ** Mais à la fin, j'ai pu créer une procédure qui conduirait à des résultats similaires. ** **
Remplacez par un sous-marin en 2 étapes.
".URL commençant par png".gsub(http, "https")
C'est un flux à remplacer.
Tout d'abord, extrayez l'URL de la chaîne de caractères.
Je voulais utiliser String # scan
ici, mais il semble qu'il existe déjà une méthode appelée" Extraire l'URL de la chaîne ". .. (trop incroyable)
Référence: Extraire l'URL de la chaîne --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 "]
Ensuite, utilisez-les pour déterminer et remplacer chacun.
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 "
Je pense que le but est de le remplacer par un sous-marin en deux étapes.