function adjustByTagPostion(str){
var left_brace_index = str.lastIndexOf(
'<');
var right_brace_index = str.lastIndexOf(
'>');
var inTagDefinition = left_brace_index > right_brace_index;
return inTagDefinition ? str.substring(0,left_brace_index) : str; }
function modifyDisplayString(original, addTags){
var tagLenth = addTags.length;
for(
var i = tagLenth-1; i >= 0; i--){ original +=
'</' + addTags[i] +
'>'; }
return original; }
function splitString(original, length){
var non_match_tag = []
var to = length >= original.length ? original.length : length;
var substring = original.substring(0,to); adjustedSubString = adjustByTagPostion(substring);
var tag_pattern = /<\s*(\w+\b)(?:[^>]*[^\/])?>|<(\/\w+)>/ig adjustedSubString.replace(tag_pattern,
function(match,$1,$2){
var value = $1 ==
'' ? ($2 ==
'' ?
'' : $2) : $1;
if(value.charAt(0) ==
'/'){
if(non_match_tag.length > 0 && non_match_tag[non_match_tag.length-1] == value.substring(1)){ non_match_tag.pop(); } }
else{ non_match_tag.push(value); } });
return modifyDisplayString(adjustedSubString, non_match_tag); }