This morning i needed to reduce any given string to a certain length and then place a pattern at the end of the string, in this case a simple '....' but the reduction had to take into account full words, meaning, i didnt want to just split the string in any old place and leave parts of a word in the final string. So i created this little String Exstension which i thought may come in useful for some other people! Seems to work great for me....
You pass this method of the String object, a length to cut the string down to, and a pattern that you want to be returned at the end of the string:
String.prototype.reduce=function(l,p)
{
if(this.length<=l) return this;
var words=this.split(" ")
var numWords=words.length
var output=[]
var ol,cWord,w
for(w=0;w<numWords;++w)
{
cWord=words[w]
cwl=cWord.length
if((ol+cwl)<=l)
{
output.push(cWord)
ol+=cwl+1
}
else break
}
return output.join(" ")+(this.length>l) ? p
}
And here is how you would use this method:
rhyme="Bah bah, black sheep, have you any wool?"
cutRhyme=rhyme.reduce(22,"...")
For examples sake:
trace(cutRhyme);
Outputs:
Bah bah black sheep...