ColdFusionで値の配列を変換するための最良の方法は何ですか
[ Fed Jones, John Smith, George King, Wilma Abby]
最後のコンマがまたはであるリストへ
Fed Jones, John Smith, George King or Wilma Abby
REReplaceは機能するかもしれないと思いましたが、まだ正しい表現が見つかりませんでした。
ColdFusionで値の配列を変換するための最良の方法は何ですか
[ Fed Jones, John Smith, George King, Wilma Abby]
最後のコンマがまたはであるリストへ
Fed Jones, John Smith, George King or Wilma Abby
REReplaceは機能するかもしれないと思いましたが、まだ正しい表現が見つかりませんでした。
配列がある場合は、最後の要素を ArrayToList と組み合わせるのが最も簡単な方法です ( Henry's answer によると)。
文字列として取得した場合、 rereplace の使用は有効な方法であり、次のように機能します。
<cfset Names = rereplace( Names , ',(?=[^,]+$)' , ' or ' ) />
これは、コンマに一致し、文字列の最後までコンマがないことを(一致せずに)チェックします(もちろん、最後のコンマにのみ適用されるため、置き換えられます)。
リストに変換する前に、最初に配列レベルで操作する方が簡単です。
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"
もう 1 つのオプションは、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>
結果:
フェッド・ジョーンズ、ジョン・スミス、ジョージ・キング、またはウィルマ・アビー