激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Ruby - Ruby編寫HTML腳本替換小程序的實例分享

Ruby編寫HTML腳本替換小程序的實例分享

2020-05-09 10:50godlike Ruby

這篇文章主要介紹了Ruby編寫HTML腳本替換小程序的實例分享,單純使用Ruby中的字符串替換方法而沒有涉及更復雜的正則表達式,需要的朋友可以參考下

在一個文件里有很多以下內容:

?
1
2
3
4
5
<p style="display:none">此題選D。
....
....
....
</p>

而本人要實現的功能是將它替換成:

?
1
2
3
4
5
<div style="display:none" class="sl_explain">此題選D。
.....
.....
.....
</div>

這個東西看起來有點簡單,但本人整整花了半天才實現此功能,主要是很久沒寫RUBY程序了,所以對API比較陌生;其次是本人對正則表達式,尤其是ruby的正則表達式不太熟悉;最后,還因為一些細節考慮得不夠。
要實現上述功能,可以分為兩步,第一步是將

?
1
2
3
4
5
<p style="display:none">此題選D。
....
....
....
</p>

中的\n替換掉,即替換成:

?
1
<p style="display:none">此題選D。............</p>

這種形式,為什么要替換換\n呢,因為在讀文件是,需要一行一行讀,所以有\n的話,這一行就讀不完,那么在用正則表達式匹配時,自然會匹配不全。要實現替換掉而且只替換掉

?
1
<p style="display:none">此題選D。............</p>

內部的\n,需要一些限制,具體實現代碼如下:
File.open("邏輯填空2.htm","w") do |test|

?
1
2
3
4
5
6
7
8
9
File.open("邏輯填空.htm",'r:gbk') do |file|
 file.each_line do | line|
 if(line.start_with?('<p style="display:none">') && !line.end_with?("</p>\n"))
  line.gsub!(Regexp.new('\n'), '')
  end
 test.print line
 end
end
end

即將替換掉的內容放在新的一個文件“邏輯填空2.html”中(注意1,上面輸出到文件時,使用的是print,而不是puts,不然它又會自然加上一個\n,那就白替換了;注意2,上面的end_with后面還加個\n,因為讀取這行結尾時,還有個隱形的換行符\n;注意3,有時候<p style="display:none">前面會有空格,所以可以將start_with改成include?),然后再讀取此文件,再通過正則表達式進行替換,將替換掉的內容又放在“test.html”中:

?
1
2
3
4
5
6
7
8
9
File.open("test.html","w") do |test|
File.open("邏輯填空2.htm",'r') do |file|
 file.each_line do | line|
  line.gsub!(Regexp.new('<p style="display:none">(.*)</p>'), '<div style="display:none" class="sl_explain">\1</div>')
  test.puts line
 end
end
 
end

這樣,本人要實現的功能就達到了,另外,如果如果文件不是一行一行讀取的,倒是可以用多行匹配的方式來做:

?
1
Regexp.new('<p style="display:none">(.*)</p>',Regexp::MULTILINE)

可惜,本人只想出了逐行讀取的方法,所以多行匹配模式沒用上。

延伸 · 閱讀

精彩推薦
  • RubyRuby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼,數據是隨機的,所以每次的記錄都會不同。 ...

    ruby教程網2962020-04-10
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數,只有方法.而且實際上有不止一種方法.這一節我們介紹 訪問控制 (accesscontrols). 想想當我們在最高層而不是在一個類的定義里定義...

    ruby教程網3572020-04-08
  • RubyRuby簡潔學習筆記(一):字符串、數字、類和對象

    Ruby簡潔學習筆記(一):字符串、數字、類和對象

    這篇文章主要介紹了Ruby簡潔學習筆記(一):字符串、數字、類和對象,本文是學習筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyRuby設計模式編程中使用Builder建造者模式的實例

    Ruby設計模式編程中使用Builder建造者模式的實例

    這篇文章主要介紹了Ruby設計模式編程中使用Builder建造者模式的實例,建造者模式將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表...

    范孝鵬2192020-05-07
  • RubyRuby環境下安裝使用bundler來管理多版本的gem

    Ruby環境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應用實例來進行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • RubyCentOS中配置Ruby on Rails環境

    CentOS中配置Ruby on Rails環境

    經過一個上午的折騰,終于把ROR環境在CentOS中搞定,繞了很多彎路,把文章寫下來總結一下 ...

    可樂加糖4762020-04-12
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 欧美成人精品一区二区 | 久久精品中文字幕一区 | 日本久久网站 | 欧美 国产 亚洲 卡通 综合 | 中文字幕在线永久视频 | 久久久久久久国产a∨ | 精品一区二区三区中文字幕老牛 | 激情宗合网 | 越南一级黄色片 | 欧美一级做一a做片性视频 日韩黄色片免费看 | 亚洲第一成av人网站懂色 | 亚洲网站免费 | 免费人成在线观看网站 | 天天舔夜夜操 | 永久免费av片在线观看全网站 | 欧美大穴 | 性aaa| 狠狠一区| 亚洲国产精久久久久久久 | 免费看国产 | 欧美成年性h版影视中文字幕 | 小视频免费在线观看 | 在线成人免费av | 欧美一二区视频 | 黄色特级视频 | 天堂成人一区二区三区 | 午夜久| 亚洲视频成人 | 伦一区二区三区中文字幕v亚洲 | 一色桃子av大全在线播放 | 中文字幕伦乱 | 精品一区免费 | 欧美成人一二三区 | 亚洲午夜在线视频 | 成人在线观看一区 | 国产分类视频 | 国产一区二区三区网站 | www.91sese | 国产一级淫片免费看 | 老a影视网站在线观看免费 国产精品久久久久久久久久尿 | 精品中文字幕视频 |