2013-01-24 60 views
5

我想清理提交的文件名。ColdFusion替换列表重新排列返回的字符串

我使用replacelist(filename,"',##,&, ",",,and,-")

  • 删除'#
  • 取代&and
  • -替代空间。

当给"apost's & pound#.JPG",而不是返回:

"aposts-and-pound.jpg" 

replaceList回报:

"apostandspound-.JPG" 

我使用ColdFusion 10

+1

+1从一个1计时器一个很好的问题。欢迎来到stackoverflow :) – Leigh

回答

8

这不是重新排序 - 这是由于CF列表处理如何工作 - 空元素被忽略/删除。

一些List〜字符串处理函数有一个额外的参数来改变这种行为(即将空元素作为空字符串处理),但是ReplaceList不会出现。

您可以在一个单独的步骤的替代品做清除解决这个问题:

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

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

你可能想在'replaceList()',@Peter中为这个短缩放提出一个增强请求? –

+0

这里你去:https://bugbase.adobe.com/index.cfm?event=bug&id=3489021 –

+2

嗯,即将为Railo也提出问题,但看起来它已经像预期的那样行事了(不需要IncludeEmptyFields )。现在我不知道是否值得提出一个兼容性问题,因为这几乎可以肯定是首选的行为,并希望能够随CF一起改变? :/ –