从 CF10 的列表中删除重复项

Remove duplicates from a list in CF10

我有以下字符串,但在使用该字符串之前,我想从中删除重复项:

http://website.com/abc.asp?type=298&action=SUBMIT&product=&contribution=&rateTerm=&surrYr=&mva=&rop=&sortBy=1&sortOrder=2&pagenum=3&company=&product=&state=&contribution=&rateTerm=&surrYr=&mva=&rop=

我尝试使用 cflib 函数 listRemoveDuplicates,但这似乎无法解决问题。

它应该看起来像:

http://website.com/abc.asp?type=298&action=SUBMIT&product=&contribution=&rateTerm=&surrYr=&mva=&rop=&sortBy=1&sortOrder=2&pagenum=3

我正在使用 cf10。

您期望的 cfoutput 也应该有 company=&state=。因为它们也不同。因此,考虑到这一点,您可以尝试一下:

<cfset url = "http://website.com/abc.asp?type=298&action=SUBMIT&product=&contribution=&rateTerm=&surrYr=&mva=&rop=&sortBy=1&sortOrder=2&pagenum=3&company=&product=&state=&contribution=&rateTerm=&surrYr=&mva=&rop=">

<!--- Get domain name and query string --->
<cfset domainName = listGetAt(url , 1, "?")>
<cfset queryString = listGetAt(url , 2, "?")>
<cfset tempStruct = structNew()>
<cfloop list="#queryString#" index="currentString" delimiters="&">
    <cfset tempStruct[ currentString ] = "">
</cfloop>
<cfset queryString = structKeyList(tempStruct,"&")>
<cfset newUrl = domainName & "?" & queryString>

输出:

http://website.com/abc.asp?rateTerm=&company=&mva=&pagenum=3&sortOrder=2&product=&rop=&action=SUBMIT&state=&type=298&surrYr=&contribution=&sortBy=1

为了保持顺序,您可以这样定义 tempStruct

<cfset tempStruct = structNew()>
<cfset tempStruct = createObject("java", "java.util.LinkedHashMap").init() />

输出:

http://website.com/abc.asp?type=298&action=SUBMIT&product=&contribution=&rateTerm=&surrYr=&mva=&rop=&sortBy=1&sortOrder=2&pagenum=3&company=&state=

当您使用 CF10 时,您也可以像这样使用 ListRemoveDuplicates

<cfset url = "http://website.com/abc.asp?type=298&action=SUBMIT&product=&contribution=&rateTerm=&surrYr=&mva=&rop=&sortBy=1&sortOrder=2&pagenum=3&company=&product=&state=&contribution=&rateTerm=&surrYr=&mva=&rop=">

<!--- Get domain name and query string --->
<cfset domainName = listGetAt(url , 1, "?")>
<cfset queryString = listGetAt(url , 2, "?")>
<cfset queryString = listRemoveDuplicates(queryString, "&")>
<cfset newUrl = domainName & "?" & queryString>

输出:

http://website.com/abc.asp?type=298&action=SUBMIT&product=&contribution=&rateTerm=&surrYr=&mva=&rop=&sortBy=1&sortOrder=2&pagenum=3&company=&state=