擅长:python、mysql、java
<p>这里有一种可能的方法;不确定它对大量数据的处理效果如何:</p>
<pre><code>require "stringio"
require "csv"
class MarkdownTidy
def initialize(rules)
@csv = CSV.new(rules.is_a?(IO) ? rules : StringIO.new(rules))
@from_to = {}.tap do |hsh|
@csv.each do |from, to|
re = Regexp.new(Regexp.escape(from.strip))
hsh[re] = to.strip
end
end
end
def tidy(str)
cpy = str.dup
@from_to.each do |re, canonical|
cpy.gsub! re, canonical
end
cpy
end
end
csv = <<-TEXT
C#, C-Sharp
C Sharp, C-Sharp
Crazy,
C #, C-Sharp
TEXT
markdown = <<-TEXT
C# some text C # some text Crazy
C#, C Sharp
TEXT
mt = MarkdownTidy.new(csv)
[markdown].each do |str|
puts mt.tidy(markdown)
end
</code></pre>
<p>这样做的目的是用一个打开文件、读取文件并将其保存回磁盘的循环来替换末尾的循环。在</p>