位置:首页 > Ruby > Ruby编写HTML脚本替换小程序实战教程与案例分享

Ruby编写HTML脚本替换小程序实战教程与案例分享

时间:2026-08-18  |  作者:火苗实验室  |  阅读:0

在一个文件里有很多这样的内容:

Ruby编写HTML脚本替换小程序的实例分享

此题选D。 .... .... ....

需要实现的替换效果

需要实现的功能是将它替换成:


这个需求看起来简单,实际实现却花了整整半天时间。

原因主要有三点:太久没写Ruby程序,API都比较陌生;对正则表达式,尤其是Ruby的正则,不太熟悉;还有一些细节考虑得不够周全。

实现思路

要实现上述功能,可以分成两步。

第一步:先处理内部换行符

先把

此题选D。 .... .... ....

内部的换行符替换掉,变成这种形式:

此题选D。............

为什么要先替换换行符?因为读文件时是一行一行读取的。

如果中间有换行符,这一行就读不完整,正则匹配自然也不会完整。

而且替换操作必须限定在

...

内部,不能影响外部内容。

具体实现代码如下:

File.open("逻辑填空2.htm","w") do |test|

File.open("逻辑填空.htm",'r:gbk') do |file|
 file.each_line do | line|
 if(line.start_with('

') && !line.end_with("

n")) line.gsub!(Regexp.new('n'), '') end test.print line end end end

实现时要注意的细节

  • 输出到文件时用的是 print,而不是 puts,否则又会自动加上换行符,前面的替换就白做了。
  • end_with 后面加了个 n,因为读取这行结尾时,还会有一个隐形的换行符。
  • 有时候

    前面会有空格,所以可以将 start_with 改成 include 来放宽判断条件。

第二步:再用正则完成标签替换

接着读取处理过的文件,再通过正则表达式进行替换。

把结果写到新文件 test.html 中:

File.open("test.html","w") do |test|
File.open("逻辑填空2.htm",'r') do |file|
 file.each_line do | line|
  line.gsub!(Regexp.new('

(.*)

'), '') test.puts line end end end

补充说明

这样一来,目标就达成了。

另外,如果文件不是逐行读取,而是整个读入,其实可以用多行匹配的方式:

Regexp.new('

(.*)

',Regexp::MULTILINE)

可惜这里只采用了逐行读取的方法,所以多行匹配模式并未派上用场。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多