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

时间:2012-12-12 00:12:47

标签: regex coldfusion

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

[ Fed Jones, John Smith, George King, Wilma Abby] 

以及最后一个逗号为a或

的列表
Fed Jones, John Smith, George King or Wilma Abby

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

3 个答案:

答案 0 :(得分:13)

如果你有一个数组,最后一个元素与ArrayToList的组合是最简单的方法(根据Henry's answer)。

如果您已将其作为字符串使用,则使用rereplace是一种有效的方法,并且可以这样工作:

<cfset Names = rereplace( Names , ',(?=[^,]+$)' , ' or ' ) />

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

答案 1 :(得分: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"

答案 2 :(得分:2)

另一种选择是使用listLast和结果字符串的JAVA lastIndexOf()方法处理列表/字符串。

<cfscript>
  names = ["Fed Jones", "John Smith", "George King", "Wilma Abby"];
  result = arraytoList(names,', ');
  last = listLast(result);
  result = listLen(result) gt 1 ? mid(result, 1, result.lastIndexOf(',')) & ' or' & last : result;
</cfscript>
<cfoutput>#result#</cfoutput>

结果:

  

Fed Jones,John Smith,George King或Wilma Abby