<cffunction name="leftWords" access="public" output="false" returntype="string"
hint="I return a string limited to X characters without butchering the last word.">
<cfargument name="InputString" required="true" type="string" />
<cfargument name="CharacterLimit" required="true" type="numeric" />
<cfset var CharacterCount = 0 />
<cfset var ReturnString = "" />
<cfloop list=#arguments.InputString# index="i" delimiters=" ">
<cfif CharacterCount + Len(i) LTE arguments.CharacterLimit>
<cfset CharacterCount = CharacterCount + Len(i) />
<cfset ReturnString = ListAppend(ReturnString,i," ") />
<cfelse>
<cfbreak />
</cfif>
</cfloop>
<cfreturn ReturnString />
</cffunction>