在ColdFusion中转换值数组的最佳方法是什么
[ Fed Jones, John Smith, George King, Wilma Abby]
以及最后一个逗号为a或
的列表Fed Jones, John Smith, George King or Wilma Abby
我认为REReplace可能有效但尚未找到正确的表达方式。
答案 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