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

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

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

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

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

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

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

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

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

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

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

内部的\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

即将替换掉的内容放在新的一个文件“逻辑填空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

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

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索html
, 字符串
, ruby
替换
ruby小程序、ruby炫技小程序、微信小程序实例、小程序实例、java小程序实例,以便于您获取更多的相关知识。

时间: 2024-09-21 15:14:01

Ruby编写HTML脚本替换小程序的实例分享_ruby专题的相关文章

优化Ruby脚本效率实例分享_ruby专题

profile.rb是为Ruby程序准备的profiler,它可以统计并输出各方法的运行时间,以便于找到程序执行的性能瓶颈.这次就用它来剖析脚本的运行时间.使用方法很简单,加上命令行选项-r profile就可以: ruby -r profile rename.rb 运行结束后,会把统计信息输出到标准错误输出中.如下图所示: profile统计的是各方法的运行时间,分为2类.第1种计算的是从方法调用到方法返回之间的时间,称为整体时间:第2种则是从整体时间中扣除在该方法中调用其它方法所耗费时间之后

c语言-用vc6.0编写一个整人的小程序(我想要详细的做法和解除的方法)

问题描述 用vc6.0编写一个整人的小程序(我想要详细的做法和解除的方法) 通过QQ等发给别人,在对面没有编辑环境的情况下也能整到他(比如让他骂自己不然就重启电脑:让他夸我不然锁住计算机屏幕等等!顺便告诉我怎么发给他,在对方打开时候就执行!) 解决方案 编译完之后的exe就可以直接发了吧 解决方案二: 你可以网上找一个相关的批处理文件,比如说隔一段时间把他的电脑的声音关掉等等,然后设置成开机运行就好 解决方案三: 改变VC6.0程序方法.

用java编写的猜数小程序一执行就出现停止运行

问题描述 用java编写的猜数小程序一执行就出现停止运行 用java编写的猜数小程序一执行就出现停止运行 这是怎么回事???? 解决方案 报的什么错误?先看个控制台的错误,肯定是某个地方异常 解决方案二: 大哥你错误都不打印出来,别人不知道你那里出错, 解决方案三: 你这不把程序和异常贴出来,谁知道是怎么回事啊. 解决方案四: 是不是产生运行时异常导致程序终止了. 解决方案五: 楼主你啥都不贴别人怎么分析啊 解决方案六: 贴源码和控制台输出啦,大家都怒了. 解决方案七: 是不是没有装jdk

微信小程序第一手实践分享

本文讲的是微信小程序第一手实践分享,今天是微信小程序正式上线的第一天,从小程序公布.内测到今天,市面上对于小程序众说纷纭,小程序的到来给我们(微信开发)带来了什么,仅仅是又多了一种推广渠道吗?又或者是真的像外界说的那样它将取代APP?今天就和大家分享我个人对小程序的理解以及开发过程中的一些体会. 一.如何理解小程序 张小龙是基于他对未来服务场景--所见即所得的信息交互过程提出的小程序,他认为微信新形式的服务不应当只是停留在原有公众号订阅.推送的基础上:而应当更类似于APP支持一些扩展开发的能力但

基于PHP实现简单的随机抽奖小程序_php实例

一个抽奖小程序,概论可控,也可某个奖品在前端显示,而程序中根本不可能获得!把所有的概率x10后相加起来,新数组中每项的值等于它前几个的和加上它本身. 然后随即生成一个0到最大数之间的一个数,通过循环查看它属于那个区间,返回该区间的key. 代码如下 $prize = array( 1 => 3.5, //3.5%机率 2 => 2.5, 3 => 6, 4 => 2, 5 => 42, //42%机率 6 => 36, 7 => 2, 8 => 4, 9 =

微信小程序开发实例详解_其它综合

"小程序"破解IDE + Demo:https://github.com/gavinkwoe/weapp-ide-crack.git 资源汇总:https://github.com/Aufree/awesome-wechat-weapp 官方简易教程·MINA:http://wxopen.notedown.cn/ Hello小程序 - 非官方:http://www.helloxcx.com 微信应用号开发教程:https://my.oschina.net/wwnick/blog/750

需求驱动学习之Python(如何编写Python脚本替换文件中的多行字符?)

当一个人太执着于某一个东西的时候, 会错过很多美好的东西! Python值得学习的一个工具,不要局限在当前使用的语言中. 在大概3个月之前,Python对我来说一直是个迷.然而,就在3个月前我经理给我一个任务--删除(替换)所有项目源码文件中包含特定几行内容的 所有注释.整个项目源码的大小有1G,在Linux服务器(中高档)上编译需要半个多小时,可见代码量之大,不可能手动去一个一个改.肯定得用脚本去处 理,于是我想到了Python.在这之前没有接触过Python,花了2个星期一顿恶补之后,总算顺

使用Ruby编写发送邮件的程序的简单教程_ruby专题

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. Ruby提供了 Net::SMTP 来发送邮件,并提供了两个方法 new 和 start:     new 方法有两个参数:         server name 默认为 localhost         port number 默认为 25     start 方法有以下参数:         server - SMTP 服务器

如何编写Python脚本替换文件中的多行字符?

 问题描述  解题思路  代码实现  Python的特点  1.问题描述 项目源码很大,属于C/C++混合的那种,编程风格也很多样,有'.c'.'.cc'.'cpp'.'.h'.'.hh'等文件.我要完成的任务是:把包含特定几行内容的注释删掉,如(声明:下面的内容只是我随便举的一个例子,项目源码中不涉及下面的内容.) /*  * Copyright 2002 Sun Microsystems, Inc. All rights reserved. * * Redistribution and us