Html 如何将文本插入到特定行或特定单词后的文本文件中?
我需要创建一个方法,在第一个Html 如何将文本插入到特定行或特定单词后的文本文件中?,html,ruby,file,Html,Ruby,File,我需要创建一个方法,在第一个之后立即将传递给它的值插入index.html文件的主体中 我有密码: class新建\u类 def状态(电源、hp、睡眠) @sourse=sourse 打开(@sourse,'a'){| File | File.hp,sleep} 结束 结束 tamgem=新的\类新的 tamgem.status(“index.html”,20,20) 如何确保传递给此方法的数字插入到HTML文档的主体中?另外,请注意,这只是一个Ruby,而不是Rails。您可以创建如下方法:
之后立即将传递给它的值插入index.html文件的主体中
我有密码:
class新建\u类
def状态(电源、hp、睡眠)
@sourse=sourse
打开(@sourse,'a'){| File | File.hp,sleep}
结束
结束
tamgem=新的\类新的
tamgem.status(“index.html”,20,20)
如何确保传递给此方法的数字插入到HTML文档的主体中?另外,请注意,这只是一个Ruby,而不是Rails。您可以创建如下方法:
def write_after_body(original_file, new_file, *new_content)
File.open(new_file, 'w') do |file|
IO.foreach(original_file) do |line|
file.write(line)
if line.include? '<body>'
file.write(*new_content)
end
end
end
end
write_after_body("index.html", "new_index.html", 20," ", 20)
将所有内容从原始文件
index.html
复制到新文件new\u index.html
,并将20
、“
和20
添加到
标记后的新行。之后,如果您对结果满意,可以删除/移动旧文件并重命名新文件。您可以使用以下方法:
def write_after_body(original_file, new_file, *new_content)
File.open(new_file, 'w') do |file|
IO.foreach(original_file) do |line|
file.write(line)
if line.include? '<body>'
file.write(*new_content)
end
end
end
end
write_after_body("index.html", "new_index.html", 20," ", 20)
将所有内容从原始文件
index.html
复制到新文件new\u index.html
,并将20
、“
和20
添加到
标记后的新行。之后,如果您对结果满意,您可以删除/移动旧文件并重命名新文件。Ruby有一个名为的内置类,它可以作为一种方便的方法来查找字符串中某个模式的位置
为什么这对你的情况有用?您可以尝试查找
标记后第一个字符的索引
了解该索引后,您可以轻松地将子字符串插入HTML中的正确位置
以下是一个例子:
页面标题
这是一个标题
这是一段
与'index.html'位于同一文件夹中的Ruby脚本。
#StringScanner所在的库。
需要“strscan”
#读取'index.html'的所有内容并将其存储到变量中。
html=File.read('index.html')
#创建StringScanner实例。
scanner=StringScanner.new(html)
#然后扫描HTML字符串,直到标记第一次出现。
扫描器。扫描到(//)
#如果搜索成功,
#然后,扫描指针位置将刚好超出匹配的最后一个字符。
#
#换句话说,,
#扫描指针位置将是``标记后第一个字符的索引。
索引=scanner.pos
#简单插入
更新的\u html=html.insert(索引“\nHello”)
#将更新的内容写入“index.html”。
File.write('index.html',已更新\u html)
因此,您的类可能如下所示:
需要“strscan”
新班级
def状态(源、hp、睡眠)
html=File.read(源代码)
scanner=StringScanner.new(html)
扫描器。扫描到(//)
索引=scanner.pos
更新的_html=html.insert(索引“#{hp}{sleep}”)
File.write(源代码,更新的\u html)
结束
结束
tamgem=新的\类新的
tamgem.status(“index.html”,20,20)
最后一点:如果您没有任何特殊要求,请按照大多数Ruby风格指南的建议,使用CamelCase作为类名。这里有一些例子:
资料来源:
看完这篇文章
更新
我同意,总的来说,
因此,当问题相对简单时,可以使用上述方法,
但是如果您需要更全面的内容,请参阅。Ruby有一个名为的内置类,它可以作为一种方便的方法来查找字符串中某个模式的位置 为什么这对你的情况有用?您可以尝试查找
标记后第一个字符的索引
了解该索引后,您可以轻松地将子字符串插入HTML中的正确位置
以下是一个例子:
页面标题
这是一个标题
这是一段
与'index.html'位于同一文件夹中的Ruby脚本。
#StringScanner所在的库。
需要“strscan”
#读取'index.html'的所有内容并将其存储到变量中。
html=File.read('index.html')
#创建StringScanner实例。
scanner=StringScanner.new(html)
#然后扫描HTML字符串,直到标记第一次出现。
扫描器。扫描到(//)
#如果搜索成功,
#然后,扫描指针位置将刚好超出匹配的最后一个字符。
#
#换句话说,,
#扫描指针位置将是``标记后第一个字符的索引。
索引=scanner.pos
#简单插入
更新的\u html=html.insert(索引“\nHello”)
#将更新的内容写入“index.html”。
File.write('index.html',已更新\u html)
因此,您的类可能如下所示:
需要“strscan”
新班级
def状态(源、hp、睡眠)
html=File.read(源代码)
scanner=StringScanner.new(html)
扫描器。扫描到(//)
索引=scanner.pos
更新的_html=html.insert(索引“#{hp}{sleep}”)
File.write(源代码,更新的\u html)
结束
结束
tamgem=新的\类新的
tamgem.status(“index.html”,20,20)
最后一点:如果您没有任何特殊要求,请按照大多数Ruby风格指南的建议,使用CamelCase作为类名。这里有一些例子:
资料来源:
看完这篇文章
更新
我同意,总的来说,
因此,当问题相对简单时,可以使用上述方法,
但如果您需要更全面的内容,请参阅。使用正则表达式或任何其他基本方法(如StringScanner)解析HTML。而是使用真正理解HTML的HTML解析器()
require 'nokogiri'
@doc = Nokogiri::HTML('<html><body></body></html>')
@doc.at('body').add_child('<h1>Hello World</h1>')
@doc.to_html
# => "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><h1>Hello World</h1></body></html>\n"
需要“nokogiri”
@doc=Nokogiri::HTML(“”)
@doc.at('body')。添加_child('Hello World'))
@doc.to_html
#=>“\nHello World\n”
使用正则表达式解析HTML