我去砍文本到一個固定的長度,但我不想砍一半的話,所以我需要做這樣的事情:爲什麼我的話被切成兩半?
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..."
正常工作,守信用「狗」被對半斬(Demo)
我找不到破綻,每次我改變一些東西的時候,我加入新bug
對於其中一隻貓來說,它看起來非常可疑...... – tskuzzy
對於那些懶得去查看編輯歷史的人來說,原來的標題是:「爲什麼我的狗被砍成兩半:(?」這是一部史詩標題。我很難過看到它已被編輯。:-( –
這是否有幫助:http://jsfiddle.net/YXwfb/1/?基本上,這在len字符中查找最後一個單詞邊界。 – Kobi