2013-01-24 9 views
5

Sto tentando di pulire i nomi dei file inviati.ColdFusion replacelist riordini restituiti stringa

sto usando replacelist(filename,"',##,&, ",",,and,-") che

  • dovrebbe rimuovere ' e #
  • sostituire & con and
  • sostituire gli spazi con -.

Quando somministrato "apost's & pound#.JPG", invece di tornare:

"aposts-and-pound.jpg" 

replacelist rendimenti:

"apostandspound-.JPG" 

sto usando ColdFusion 10.

+1

+1 per una bella domanda da un primo-timer. Benvenuti in StackOverflow :) – Leigh

risposta

8

Questo non è riordino - si è dovuto a come funziona l'elaborazione dell'elenco CF: gli elementi vuoti vengono ignorati/rimossi.

Alcune delle funzioni di elaborazione stringa Elenco ~ hanno un argomento aggiuntivo per modificare questo comportamento (ad esempio, trattare gli elementi vuoti come una stringa vuota), ma a ReplaceList non sembra.

È possibile risolvere questo problema facendo le rimozioni in una fase separata per le sostituzioni:

<cfset NewFilename = rereplace(Filename,"['##]","","all") /> 
<cfset NewFilename = replacelist(NewFilename,"&, ","and,-") /> 

o

replacelist(rereplace(filename,"['##]","","all") , "&, " , "and,-") 
+0

Si potrebbe voler aumentare una richiesta di miglioramento per quella shortgall in 'replaceList()', @Peter? –

+0

Ecco qui: https://bugbase.adobe.com/index.cfm?event=bug&id=3489021 –

+2

Hmm, stava per sollevare un problema anche per Railo, ma sembra che si comporti già come previsto (non sono inclusi IncludeEmptyFields). Ora non so se valga la pena sollevare un problema di compatibilità, dato che questo è quasi certamente un comportamento preferito e si spera che cambierà con CF? :/ –