我有一個通過URL傳遞的ID列表。我想在運行基於這些ID的查詢之前進行一些消毒。我有這個:Coldfusion - 從列表中刪除所有非數字值?
<cfset URL.ID = ReReplaceNoCase(URL.ID,"[^0-9]","","ALL")>
但我意識到這也是剝離了逗號。有沒有一種簡單的方法從ColdFusion中的列表中刪除非數值?
我有一個通過URL傳遞的ID列表。我想在運行基於這些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" />
@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 2011-01-14 19:43:16
好奇,一旦你清理了URL.ID(包括額外的逗號),你可以把它扔進一個結構,然後進入一個數組,然後arraytolist清理逗號?這需要3-4行代碼(包括正則表達式)。 – HPWD 2013-01-09 21:35:02