0

以下の関数を変更する際にあなたの助けが必要です。現在、この関数は、文字列に重複する名前があるかどうかを確認します。重複が見つかった場合は、自動的に-numberieが追加されます。123456-2。ただし、文字列にすでに数字とダッシュが含まれている場合は、発生するはずのない最後の数字がインクリメントされます。すなわち。文字列を読み取る必要がある123456-2012から123456-2013:123456-2012-2。それを修正する方法について何かアイデアはありますか?

function test() {

var filename = "123456-2012"

var x = confirm('Duplicate record found!\n\n \''+filename+'\' \n\n rename and add record to the databse as:\n\n \''+new_name(filename)+'\'')

    if (x == true) {

    alert("adding...")
    filename = new_name(filename)
    alert(filename) 
    }

    else { return }

}  

var exists = 0 
function file_exists(name) {
   exists = 1 - exists  
   return exists 
} 

function new_name(suggested) { 

   if (!file_exists(suggested)) { return suggested } 

   var have_index = suggested.match(/^(.+)\-(\d+)$/) 
   var unused_index 
   if (have_index && have_index[2]) { 
      base = have_index[1] 
      unused_index = ++have_index[2] 
   } else { 
      base = suggested 
      unused_index = 2 
   } 

   while (file_exists(base  + "-" + unused_index)) { unused_index++ } 

   return base  + "-" + unused_index

} 
4

1 に答える 1

1

new_name関数で次の変更を行います

!have_index[2]if条件を追加したことに注意してください。

if (have_index && !have_index[2]) { 
      base = have_index[1] 
      unused_index = ++have_index[2] 
   } else { 
      base = suggested 
      unused_index = 2 
   }
于 2012-09-06T18:20:19.487 に答える