Почему выходные данные этой функции очистки не изменились? - PullRequest
0 голосов
/ 17 декабря 2010

Я ожидаю, что следующая функция выведет очищенный список тегов, но вместо этого он выведет исходный список без изменений.Однако выгрузка local.i на каждой итерации показывает очищенный тег, как и следовало ожидать:

<cfset this.tags = "tag!@%^-tag, anothersf-taggame, SDFSFtagged">

<cfset local.listPosition = 0>

<cfloop list="#this.tags#" index="local.i">
   <cfset local.i = ReReplace(local.i, "[^a-z0-9+##\-.]", "", "All")>
   <cfset local.listPosition = local.listPosition + 1>
   <cfset ListSetAt(this.tags, local.listPosition, local.i, ", ")>
</cfloop>

<cfoutput>
   #this.tags#
</cfoutput>

Есть идеи, почему происходит такое странное поведение?Это должна быть функция ListSetAt () , не добавляющая новое значение в список, но почему?

1 Ответ

6 голосов
/ 17 декабря 2010

listSetAt () не меняет список.Он возвращает копию списка с изменением, поэтому вам нужно выполнить задание.

Похоже, что здесь есть много возможностей для оптимизации.Почему вы перебираете список?Похоже, если вы разрешите запятые в регулярном выражении, вы получите те же результаты, что и этот цикл.

...