formatListAsSeries(theList)
Last updated January 14, 2010
Version: 2 | Requires: ColdFusion 5 | Library: StrLib
Description:
Function that formats a numeric list so that successive numbers are shown as a series. List must be numeric. For this function to be useful, list elements should be sorted in ascending order. Updated 1/14/10 by Todd Sharp (todd@cfsilence.com) to sort the list before grouping.
Return Values:
Returns a string.
Example:
#formatListAsSeries("2,1,6,4,7,8,10")#
<!--- outputs: 1-2, 4, 6-8, 10 --->
</cfoutput>
Parameters:
| Name | Description | Required |
|---|---|---|
| theList | The list to parse. | Yes |
Full UDF Source:
<cfscript>
/**
* Function that formats a numeric list so that successive numbers are shown as a series.
*
* @param theList The list to parse. (Required)
* @return Returns a string.
* @author Mosh Teitelbaum (mosh.teitelbaum@evoch.com)
* @version 2, January 14, 2010
*/
function formatListAsSeries(theList) {
var lastEle = "";
var isSet = false;
var fList = "";
var currEle = "";
var idx = 0;
theList = listSort(theList, "numeric", "asc");
for ( idx = 1; idx LTE ListLen(theList); idx = idx + 1 ) {
currEle = ListGetAt(theList, idx);
if ( Len(lastEle) EQ 0 ) {
fList = fList & currEle;
lastEle = currEle;
isSet = false;
} else if ( lastEle EQ currEle ) {
//do nothing
} else if ( lastEle + 1 NEQ currEle ) {
if ( isSet ) {
fList = fList & lastEle;
}
fList = fList & ", " & currEle;
lastEle = currEle;
isSet = false;
} else {
if ( NOT isSet ) {
fList = fList & "-";
}
lastEle = currEle;
isSet = true;
}
}
if ( isSet ) {
fList = fList & lastEle;
}
return fList;
}
</cfscript>
Search CFLib.org
Latest Additions
Shawn Porter added
DeMoronize
3 hour(s) ago
Chris Carey added
readPropertiesFi...
1 day(s) ago
Randy Johnson added
lastDayofWeek
3 day(s) ago
Frank Marion added
sitemapPing
7 day(s) ago
Top Rated
QuickSort
Rated 5.0, 3 time(s)
indentXml
Rated 5.0, 3 time(s)
queryColumnsToSt...
Rated 5.0, 3 time(s)
generateSsccAsn
Rated 5.0, 3 time(s)