テキストを固定長に切り刻もうとしていますが、単語を半分に切り詰めたくないので、次のようにする必要があります。
function fixedLength(str, len, bol) {
var i, l = str.length, left = 0, right = l - 1, rtn, tmp;
tmp = str.charAt(len);
if (bol || tmp === " " || tmp === "") {
rtn = str.substr(0, len);
} else {
tmp = len - 1;
for (i = tmp; i > -1; i--) {
if (str.charAt(i) === " ") {
left = i;
break;
}
}
for (i = tmp; i < l; i++) {
if (str.charAt(i) === " ") {
right = i;
break;
}
}
rtn = str.substr(0, ((Math.abs(left - tmp) <= Math.abs(right - tmp)) ? left : right));
}
return rtn + "...";
}
しかし、これを使用すると:
var str = "the quick brown fox jumped over the lazy dog";
for (var i = 0; i < 45; i++) {
document.write("i:" + i + " - " + fixedLength(str, i) + "<br>");
}
この行を除いて、誰もが正しく動作しているように見え"i:43 - the quick brown fox jumped over the lazy do..."
ます。「犬」という単語は半分に切り刻まれています (デモ)
欠陥が見つからない、何かを変更するたびに新しいバグを追加する