2015-04-29 7 views
1

je la chaîne suivante, mais avant que j'utiliser cette chaîne, je veux supprimer les doublons de celui-ci:Supprimer les doublons d'une liste 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= 

J'ai essayé d'utiliser la cflib Fonction listRemoveDuplicates, mais ne semble pas résoudre le problème.

Il devrait ressembler à:

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

J'utilise CF10.

+1

qu'attendez-vous de la chaîne finie pour ressembler? Pouvez-vous nous montrer comment vous appelez la fonction? Quelle version de CF êtes-vous? vous pourriez être en mesure d'utiliser la fonction native [ListRemoveDuplicates] (https://wikidocs.adobe.com/wiki/display/coldfusionen/ListRemoveDuplicates) si CF 10 ou au-dessus – duncan

+0

S'il vous plaît voir ma question Mise à jour – cfsammer

+1

Quel est le résultat attendu par rapport à la sortie réelle dans ce que vous essayez de faire? Montrez-nous le code que vous avez utilisé. –

Répondre

1

Le cfoutput que vous attendez doit également avoir company=&state=. Comme ils sont distincts aussi. Donc, en prenant cela en compte, vous pouvez donner à ce essayer:

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

Sortie:

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

Et pour préserver l'ordre dans lequel vous pouvez définir le tempStruct comme ceci:

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

Sortie:

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

Comme vous utilisez CF10, vous pouvez utiliser ListRemoveDuplicates aussi comme ceci:

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

Sortie:

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