0

次のような詩の数を含むいくつかのhtmlページがあります。

verses 2-5
verses 11-15
verses 21-23

「詩」という単語の前に、数字ごとにコードを追加する必要があります

<a name="2"></a><a name="3"></a><a name="4"></a><a name="5"></a>verses 2-5

したがって、指定された数値の範囲を取得し、開始前に次を追加します。

<a name=""></a>

範囲内の各数値に対して..

notepad++ を使用して検索と置換を行います。

4

2 に答える 2

0

これを行うには、スクリプトが必要になります。私はそれを行うために簡単な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

アラビア語のエンコーディングを行う方法について考えます。これはすべてのテキストファイルで実行されます。拡張子が異なるか、名前が似ている場合は、お知らせください。スクリプトを更新します。

これは完全に機能するはずです。テストしただけです。問題がある場合はお知らせください。

于 2013-01-10T02:52:06.573 に答える
0

次のように、10 から 99 までの 2 桁の詩に対してそれを行うことができます。

Search: verses (\d)(\d)-
Replace: <a name="$1">verses $1$2-</a>

3 桁以上の数字については、余分な桁の別のグループを追加し、同様に扱います。

notepad ++は先読みをサポートしていないため、この追加の複雑さが必要です。

于 2013-01-10T00:37:09.660 に答える