我需要在 50 個字符后縮短文本,但如果第 50 個字符位于單詞的中間 - 僅在單詞之后而不是之前剪切。
示例文本:與流行的看法相反,Lorem Ipsum 不僅僅是文本(59 個字符)
預期輸出:與流行的看法相反,Lorem Ipsum 不簡單(54 個字符)
我正在嘗試這個: text.substr(0,50).lastIndexOf(' ')); - 對我不好,因為它削減了“簡單”,我希望簡單地出現在縮短的文本中。謝謝您的幫助!
uj5u.com熱心網友回復:
如果短語長度小于限制,則回傳短語;否則,將切片索引設定為限制并掃描,直到找到單詞邊界并將短語切片。
const clip = (phrase, limit) => {
if (phrase.length <= limit) return phrase;
let sliceIndex = limit;
while (sliceIndex < phrase.length && /\b/.test(phrase[sliceIndex])) sliceIndex ;
return phrase.slice(0, sliceIndex);
};
const input = "Contrary to popular belief, Lorem Ipsum is not simply text";
const expected = "Contrary to popular belief, Lorem Ipsum is not simply";
const actual = clip(input, 50);
console.log(actual === expected); // true
uj5u.com熱心網友回復:
您與子字串和 indexOf 關系密切。如果您在前 50 個字符后查找空格,它將起作用。然后有一個邊緣情況,字串長度超過 50 個字符并且沒??有空格。
const shortener = (str) => {
const offset = str.substring(50).indexOf(' ');
return offset !== -1 ? str.substring(0,50 offset) '...' :
str.length > 50 ? str '...' : str;
}
uj5u.com熱心網友回復:
const text ="Contrary to popular belief, Lorem Ipsum is not simply text"
// start of the last word
const start = text.substr(0,50).lastIndexOf(' ')
// start from where you left 1 to remove space
const end = text.substr(start 1,text.length).indexOf(' ')
console.log(text.substr(0,start end 1));
uj5u.com熱心網友回復:
正則運算式可以幫助你。
這個想法是找到至少 50 個以單詞邊界結尾的符號\b
let text = 'Contrary to popular belief, Lorem Ipsum is not simply text';
let shortetedText = text.match(/.{50,}?(?=\b)/)[0];
console.log(shortetedText);
UPD:
如果您想創建一個函式來縮短超過 50 個符號的文本,我們可以創建一個函式來代替您執行此操作。
let short = text => text.length > 50 ? text.match(/.{50,}?(?=\b)/)[0]: text;
然后就這樣使用它:
let longText = 'Contrary to popular belief, Lorem Ipsum is not simply text';
let shortText = 'Lorem ipsum';
console.log(short(longText)); //will shorten text
console.log(short(shortText)); //will leave text as it is bcoz it's shorter than 50 symbols
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495796.html
標籤:javascript 节点.js
上一篇:阻止訪問小螢屏上的頁面
