Shortening strings to a fixed length in JavaScript
I have this function I’ve used for quite a long time to shorten a string to a fixed amount of characters without breaking in between words:
function constrain(str,n){
var words = str.split(' ');
var resultstr = '';
for(var i = 0; i < words.length; i++ ){
if((resultstr + words[i] + ' ').length>=n){
resultstr += '…';
break;
}
resultstr += words[i] + ' ';
}
return resultstr;
}
```ately that it can get really slow with massive strings in Internet Explorer. This is a well-known issue and the solution is to [use arrays instead of concatenating strings](http://www.softwaresecretweapons.com/jspwiki/Wiki.jsp?page=JavascriptStringConcatenation).
This made me realise how convoluted the above example is and that it is much easier to do the same with an array:
function constrain(str,n){ if(str.length > n){ var s = str.substr(0, n); var words = s.split(‘ ‘); words[words.length-1] = ‘’; str = words.join(‘ ‘) + ‘…’ } return str; } ```
You send a string and the amount of characters wanted as parameters and the function returns the string with the right lenght followed by a “…”. Another way to work around the MSIE issue of slow concatenation is to use thea string builder. [tags]string concatenation webdevtrick[/tags]