Получение n-го элемента массива, созданного с помощью .split () в ColdFusion 8 - PullRequest
0 голосов
/ 14 января 2011

Хорошо, я понимаю, что выполнение следующего создаст массив моей строки, разделенной на _:

<cfset theString = "get_the_point">
<cfset thePieces = theString.Split("_{1}")>

Но как мне получить только 3-й элемент массива, не создавая новую переменную, которая оценивает массив как:

<cfset theThirdPiece = thePieces[3]>

Есть ли что-то в .Split(), о котором я не знаю, что может вернуть только тот предмет, который я ищу? Это должно быть очень легко, потому что я ничего не нашел в документации. Или я искал это неправильно.

Ответы [ 3 ]

6 голосов
/ 14 января 2011

Если вы используете простой разделитель, такой как подчеркивание, вы можете сделать:

<cfset thePiece = listGetAt("get_the_point", 3, "_")>

Все функции списка принимают необязательный аргумент разделителя, который представляет собой список отдельных символов для использования в качестве разделителей.

Не забудьте проверить listLen () списка, прежде чем пытаться получить доступ к n-му местоположению.

2 голосов
/ 14 января 2011

Просто чтобы закончить всю картину, я бы предложил немного более простой / понятный способ сделать то, что вам нужно - если вам нужен элемент last:

<cfset thePiece = ListLast("get_the_point", "_") />

Кстати, изучая Java-обсуждение в комментариях к ответу на акцептор, я бы отметил, что есть встроенная функция для разделения:

<cfset theString = "get_the_point" />
<cfset thePieces = ListToArray(theString, "_") />

Полагаю, под капотом используется тот же Split.

0 голосов
/ 14 января 2011

Просто чтобы уточнить, что это синтаксически правильно, я должен указать, что вы также можете сделать это:

<cfset lastOne = theString.Split("_")[3] />

Я считаю это работает только в CF9 +

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