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