6

ColdFusionで値の配列を変換するための最良の方法は何ですか

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

最後のコンマがまたはであるリストへ

Fed Jones, John Smith, George King or Wilma Abby

REReplaceは機能するかもしれないと思いましたが、まだ正しい表現が見つかりませんでした。

4

3 に答える 3

13

配列がある場合は、最後の要素を ArrayToList と組み合わせるのが最も簡単な方法です ( Henry's answer によると)。

文字列として取得した場合、 rereplace の使用は有効な方法であり、次のように機能します。

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

これは、コンマに一致し、文字列の最後までコンマがないことを(一致せずに)チェックします(もちろん、最後のコンマにのみ適用されるため、置き換えられます)。

于 2012-12-12T01:31:06.887 に答える
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"
于 2012-12-12T00:22:57.823 に答える
3

もう 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>

結果:

フェッド・ジョーンズ、ジョン・スミス、ジョージ・キング、またはウィルマ・アビー

于 2012-12-12T00:54:49.007 に答える