Каков правильный синтаксис для замены двух символов одновременно в ColdFusion? - PullRequest
2 голосов
/ 24 февраля 2010

Я пытаюсь заменить два специальных символа, используя функцию замены в ColdFusion:

<cfset MyQuery = "/Attribute One\/Attribute Two\/Attribute Three\">
<cfset MyString = Replace(MyQuery, "/", "<li>", "ALL")>
<ul>
<cfoutput>#MyString#</cfoutput>
</ul>

Это хорошо работает, но мне нужно правильно закрыть теги li. Я попытался добавить следующее, которое не сработало:

<cfset MyString = Replace(MyQuery, "/", "<li>", "ALL") AND Replace(MyQuery, "\", "</li>", "ALL")>

Первый вопрос: это правильный путь к тому, что я пытаюсь? Или мне просто хранить мой html внутри базы данных вместе с атрибутами?

Второй вопрос: если мой подход верен, может кто-нибудь привести пример правильного синтаксиса?

Большое спасибо!

1 Ответ

4 голосов
/ 24 февраля 2010

Вложенная замена? Просто замените "/" первым, чтобы избежать влияния на "":

<cfset MyQuery = "/Attribute One\/Attribute Two\/Attribute Three\" />

<cfset MyString = Replace(MyQuery, "/", "<li>", "ALL") />
<cfset MyString = Replace(MyString, "\", "</li>", "ALL") />
<cfoutput>#MyString#</cfoutput>

<cfset MyString = Replace(Replace(MyQuery, "/", "<li>", "ALL"), "\", "</li>", "ALL") />
<cfoutput>#MyString#</cfoutput>

Управление списком может быть еще одним способом сделать это:

<cfset MyQuery = "/Attribute One\/Attribute Two\/Attribute Three\">

<cfset MyString = "" />

<cfloop list="#MyQuery#" index="li" delimiters="\/">
    <cfset MyString &= "<li>#li#</li>" />
</cfloop>

<cfoutput>#MyString#</cfoutput>
...