用ColdFusion替换最后一个逗号或使用ColdFusion

Aar*_*ron 4 regex coldfusion

在ColdFusion中转换值数组的最佳方法是什么

[ Fed Jones, John Smith, George King, Wilma Abby] 
Run Code Online (Sandbox Code Playgroud)

以及最后一个逗号是或的列表

Fed Jones, John Smith, George King or Wilma Abby
Run Code Online (Sandbox Code Playgroud)

我认为REReplace可能有效,但尚未找到正确的表达方式.

Pet*_*ton 13

如果你有一个数组,最后一个元素与ArrayToList的组合是最简单的方法(根据亨利的答案).

如果你把它作为一个字符串,使用rereplace是一个有效的方法,并将这样工作:

<cfset Names = rereplace( Names , ',(?=[^,]+$)' , ' or ' ) />
Run Code Online (Sandbox Code Playgroud)

其中说匹配逗号,然后检查(不匹配)在字符串结尾之前没有逗号(当然只会应用最后一个逗号,因此将被替换).

  • 彼得的DNA是由正则表达式构成的.我已经看到了它. (3认同)
  • +1,因为它正确处理单个元素(甚至空)列表开箱即用. (2认同)
  • 哈,_我希望!_(我真的这么做;如果周围有任何精灵,我有这个可爱的灯交易......) (2认同)

Hen*_*nry 5

在转换为列表之前,首先在数组级别操作会更容易.

names = ["Fed Jones", "John Smith", "George King", "Wilma Abby"];
lastIndex = arrayLen(names);
last = names[lastIndex];
arrayDeleteAt(names, lastIndex);
result = arrayToList(names, ", ") & " or " & last;  
// result == "Fed Jones, John Smith, George King or Wilma Abby"
Run Code Online (Sandbox Code Playgroud)

  • 如果数组长度是可变的,请务必调整代码以预期单个元素数组或空数组以避免错误或重复值,即"Fed Jones或Fed Jones". (6认同)