私はIDのリストをURLに渡しています。これらのIDに基づいてクエリを実行する前に、いくつかのサニタイズを行いたいと思います。私はこれを持っています:Coldfusion - 数値以外の値をすべてリストから削除しますか?
<cfset URL.ID = ReReplaceNoCase(URL.ID,"[^0-9]","","ALL")>
しかし、私はコンマも取り除いていることを理解しています。 Coldfusionのリストから数値以外の値を削除する簡単な方法はありますか?
私はIDのリストをURLに渡しています。これらのIDに基づいてクエリを実行する前に、いくつかのサニタイズを行いたいと思います。私はこれを持っています:Coldfusion - 数値以外の値をすべてリストから削除しますか?
<cfset URL.ID = ReReplaceNoCase(URL.ID,"[^0-9]","","ALL")>
しかし、私はコンマも取り除いていることを理解しています。 Coldfusionのリストから数値以外の値を削除する簡単な方法はありますか?
あなたの正規表現にコンマを追加するだけではどうですか?
<cfset URL.ID = ReReplaceNoCase(URL.ID,"[^0-9]","","ALL")>
正規表現はまだ代わりに、私は整数の検証でループを使用すると思い、文字列内の余分なカンマを残し、一部の数字を受け入れ
<cfset URL.ID = ReReplaceNoCase(URL.ID,"[^0-9,]","","ALL")>
次のようになります。
<cfset url.id = "100,abc,102z,eee,22.5,773">
<!--- 100,,102,,225,773 --->
<cfoutput>#ReReplaceNoCase(URL.ID,"[^0-9,]","","ALL")#<br /></cfoutput>
<cfset dirtyIds = listToArray(url.id)>
<cfset cleanIds = []>
<cfloop array="#dirtyIds#" index="dirtyId">
<cfif isValid("integer",dirtyId)><cfset arrayAppend(cleanIds, dirtyId)></cfif>
</cfloop>
<cfset url.id = arrayToList(cleanIds)>
<!--- 100, 773 --->
<cfoutput>#url.id#</cfoutput>
<cfscript>
//Test Case
URL.ID= "abc,12,3,zoiui fdsoaiu ,323333";
//URL.ID= "12,3,323333"
URL.ID= reReplace(URL.ID , "([^0-9,]+,)" , "" , "all");
</cfscript>
あなたにこれを入れたいと言われています<cfqueryparam .. list= "true" />
+1この正規表現の仕事は@Sean Coyneよりも優れています。私の例では正しく動作します。 – orangepips
これをもう一度見てください。問題があります。末尾にカンマがあることを前提としています。 reReplace(URL.ID& "、" ..)とそれは世話をします –
@orangepips
isNumeric()も同様に動作します。
<cfset url.id = "100,abc,102z,eee,22.5,773">
<cfset variables.newlist = ''>
<cfloop list="#url.id#" index="i">
<cfif isNumeric(i)>
<cfset variables.newlist = ListAppend(variables.newlist,i)>
</cfif>
</cfloop>
<cfoutput>#variables.newlist#</cfoutput>
doh!ありがとう! (私はできるだけ早くこの答えを受け入れます) – jyoseph
好奇心、一度URL.ID(余分なカンマを含む)を整理すると、それを構造体にスローし、次に配列に格納してから、配列のリストをクリーンアップすることができますコンマ?これは3-4行のコード(正規表現を含む)を必要とします。 – HPWD