Coldfusion - можете ли вы рассматривать строку как список без разделителей? - PullRequest
4 голосов
/ 23 января 2020

Раньше я думал, что вы можете взять обычную строку и рассматривать ее как список с "" в качестве разделителя, но CF, похоже, не позволяет этого. Делая что-то вроде этого:

<cfloop list="abcdef" delimiters="" index="thisLetter">
    <cfoutput>#thisLetter#</cfoutput><br>
</cfloop>

приводит только к 1 итерации l oop и выводу всей строки в одну строку. Не то, что нужно.

Я обнаружил, что вы можете использовать метод Java string.split() с разделителем "":

<cfset myArray = "abcdef".split("")>
<cfdump var="#myArray#">

Но тогда первый элемент в полученном массиве является пустая строка, так что есть дополнительный шаг в удалении этого из массива.

Есть ли более элегантный способ перебрать все символы в этой строке без необходимости предварительно выполнять какие-либо специальные манипуляции со строками и без необходимости используйте left(), right() или mid()?

Ответы [ 2 ]

4 голосов
/ 24 января 2020

Я рекомендую использовать Java String.toCharArray():

<cfset myString = "aäй漢か">
<cfset theChars = myString.toCharArray()>

<cfloop array="#theChars#" index="char">
    <cfoutput>#char#</cfoutput>
</cfloop>
0 голосов
/ 23 января 2020

Похоже, это то, что я искал: https://www.bennadel.com/blog/307-ask-ben-iterating-over-the-characters-in-a-string.htm

Использование mid () является самым простым и не слишком громоздким. Тем не менее, было бы неплохо иметь возможность использовать список CF l oop с разделителями = "".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...