• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Ruby编写HTML脚本替换小程序的实例分享

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了html ruby,html5 ruby,ruby脚本,ruby脚本语言,ruby自动化脚本等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在一个文件里有很多以下内容:

<p style="display:none">此题选D。
....
....
....
</p>
</div>

而本人要实现的功能是将它替换成:

<div style="display:none" class="sl_explain">此题选D。
.....
.....
.....
</div>
</div>

这个东西看起来有点简单,但本人整整花了半天才实现此功能,主要是很久没写RUBY程序了,所以对API比较陌生;其次是本人对正则表达式,尤其是ruby的正则表达式不太熟悉;最后,还因为一些细节考虑得不够。
要实现上述功能,可以分为两步,第一步是将

<p style="display:none">此题选D。
....
....
....
</p>
</div>

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

<p style="display:none">此题选D。............</p>
</div>

这种形式,为什么要替换换\n呢,因为在读文件是,需要一行一行读,所以有\n的话,这一行就读不完,那么在用正则表达式匹配时,自然会匹配不全。要实现替换掉而且只替换掉

<p style="display:none">此题选D。............</p>
</div>

内部的\n,需要一些限制,具体实现代码如下:
File.open("逻辑填空2.htm","w") do |test|

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
</div>

即将替换掉的内容放在新的一个文件“逻辑填空2.html”中(注意1,上面输出到文件时,使用的是print,而不是puts,不然它又会自然加上一个\n,那就白替换了;注意2,上面的end_with后面还加个\n,因为读取这行结尾时,还有个隐形的换行符\n;注意3,有时候<p style="display:none">前面会有空格,所以可以将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('<p style="display:none">(.*)</p>'), '<div style="display:none" class="sl_explain">\1</div>')
  test.puts line
 end
end

end

</div>

这样,本人要实现的功能就达到了,另外,如果如果文件不是一行一行读取的,倒是可以用多行匹配的方式来做:

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

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

</div>

您可能想查找下面的文章:

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

相关文章

  • web 应用中常用的各种 cache详解
  • ruby 一些简单的例子
  • ruby实现的一个异步文件下载HttpServer实例
  • Ruby编程中的赋值相关操作
  • Ruby rails 页面跳转(render和redirect_to)
  • Ruby编程中的命名风格指南
  • 实例讲解Ruby使用设计模式中的装饰器模式的方法
  • ruby、javascript、php中的观察者模式实现代码
  • ruby 标准类型总结
  • ruby will_paginate的用法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby中访问SQL Server数据库的配置实例
    • ruby开发的交互式程序例子
    • Java 版的 Ruby 解释器 JRuby 1.7.14 发布
    • Python的Flask框架中SERVER_NAME域名项的配置教程
    • 初步了解一下什么是ruby
    • Rails中使用MySQL分区表一个提升性能的方法
    • Ruby的面向对象编程的基础教程
    • 详解Ruby中的单件方法和单件类
    • 采用UTF-8解决Ruby on Rails程序的中问题
    • Ruby的运算符和语句优先级介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有