你將需要一個腳本來做到這一點。我創建了一個簡單的Ruby腳本來完成它。在你的示例文本中使用它,得到你的輸出。只需下載Ruby,將其粘貼到該文本目錄中的文件中,並將verses.txt
行替換爲您的文件名。然後在命令行中運行一樣它:ruby ./script.rb
d = File.read('./verses.txt')
c = d[0..d.length]
c.scan(/(verses\s+\d+-\d+)/) do |n|
n.each do |a|
a.scan(/(\d+-\d+)/) do |nums|
z = nums.to_s.split(/-/)
st=''
in1 = z[0].gsub(/\["/, '').to_i
in2 = z[1].chomp("\"]").to_i
(in1..in2).each do |index|
st += "<a name=\"#{index}\"></a>"
end
b = st + a;
d.gsub!(a, b)
end
end
end
puts d
f = File.new('verses2.txt', "w")
f.write(d)
按照您的要求,這裏是將覆蓋打開的文件和目錄中的所有文件上運行的修改。爲了方便起見,我不會進行目錄輸入,因此請將腳本放在所有文件的目錄中以運行它。這裏有:
Dir.entries('.').each do |entry|
entry.scan(/.*.html/) do
|fn|
d = File.read('./' + fn.to_s)
c = d[0..d.length]
c.scan(/(verses\s+\d+-\d+)/) do |n|
n.each do |a|
a.scan(/(\d+-\d+)/) do |nums|
z = nums.to_s.split(/-/)
st=''
in1 = z[0].gsub(/\["/, '').to_i
in2 = z[1].chomp("\"]").to_i
(in1..in2).each do |index|
st += "<a name=\"#{index}\"></a>"
end
b = st + a;
d.gsub!(a, b)
end
end
end
puts d
f = File.new('./' + fn.to_s, "w")
f.write(d)
end
end
我會考慮如何做阿拉伯語編碼。這將在所有文本文件上運行,如果它們具有不同的擴展名或具有相似的名稱,請告訴我,我將更新腳本。
這應該完全工作,只是測試它。讓我知道是否有問題。
正則表達式不能這樣做。你必須寫一個腳本。 – Blender
如果經文範圍是劃分的,那麼基於內容如何使用JS進行DOM操作。這樣你就不會「硬編碼」書籤,而是即時生成它們。 – Himanshu