Как разделить строку с запятой в массив в cfscript - PullRequest
8 голосов
/ 06 сентября 2011

Есть ли простой способ разбить строку через запятую на массив с помощью cfscript?

Что-то похожее на следующий JavaScript:

var a = "a,b,c".split(",");

Ответы [ 2 ]

29 голосов
/ 06 сентября 2011
var a = ListToArray("a,b,c,d,e,f");     

https://cfdocs.org/listtoarray

3 голосов
/ 06 апреля 2013

Двумя основными параметрами являются listToArray (myList) и java-метод myList.split (), как отмечалось в предыдущих ответах и ​​комментариях.Однако следует кое-что отметить.

  • По умолчанию функции списка ColdFusion игнорируют пустые элементы списка.
  • Начиная с версии 8 ColdFusion, listToArray принимает необязательный третий аргумент, includeEmptyFields, который являетсялогическое значение, управляющее этим поведением, по умолчанию false.

Например:

listToArray("asdf,,,qwer,tyui") is ["asdf", "qwer", "tyui"]
listToArray("asdf,,,qwer,tyui", ",", true) is ["asdf", "", "", "qwer", "tyui"]

Re java split:

Как и другие javaфункциональность, которая распространяется через слой ColdFusion, недокументированная и не поддерживается

В Adobe ColdFusion 8, 9 и 10, но не в Railo, это синтаксическая ошибка:

a = "asdf,,,qwer,tyui".split(",")

Но это работает:

s = "asdf,,,qwer,tyui";
a = s.split(",");

Насколько я вижу, Adobe ColdFusion обрабатывает результат .split () как массив ColdFusion:

  • CFDump показывает его как массив
  • Это основано на 1
  • Вы можете использовать arrayLen на нем
  • Вы можете изменить его элементы в ColdFusion
  • Могут быть и другие варианты поведения, которых я не делалпроверьте, что не похож на массив CF, но, как указано выше, это неupported

В Railo:

  • Отладочные дампы показывают его как собственный массив (java.lang.String [])
  • Другие утверждения о его оченьПоведение, подобное массиву, все еще остается верным

Это отличается от реальных массивов Java, созданных с помощью createObject ("java", "java.util.ArrayList").
ПРИМЕЧАНИЕ. Этотолько отчасти правильно;см. правку ниже.

  • Например, в Adobe ColdFusion элементы Java ArrayList не могут быть изменены напрямую с помощью CFML
  • В общем, Railo обрабатывает Java-массивы большекак у ColdFusion, чем у ACF

Редактировать: Спасибо, Ли, я исправлен, я должен придерживаться того, что я знаю, что на CF больше, чем Java.

Я реагировал на комментарий, говоря, что результатом .split () "является не массив ColdFusion, а собственный массив Java. Вы не сможете изменить его с помощью CF", что не так.по моему опыту.Моя попытка разъяснить это, будучи более конкретным, была плохо информирована и ненужна.

...