我有一個長文本。例如:使用JavaScript獲取片段文本?
var text = "get snippet text using javascript?";
我怎麼能寫一個方法來獲得片段,不串:
例:片段(文字,10) - > 「獲得片段......」 而不是 「讓snippe」( 10個字符)。這意味着如果最後一個字符不是空格或點,我們必須獲得更多字符,直到到達空格或點。
任何幫助?
我有一個長文本。例如:使用JavaScript獲取片段文本?
var text = "get snippet text using javascript?";
我怎麼能寫一個方法來獲得片段,不串:
例:片段(文字,10) - > 「獲得片段......」 而不是 「讓snippe」( 10個字符)。這意味着如果最後一個字符不是空格或點,我們必須獲得更多字符,直到到達空格或點。
任何幫助?
不徹底的測試:
function getSnippet(text, length) {
var rx = new RegExp("^.{" + length + "}[^ ]*");
return rx.exec(text)[0];
}
console.log(getSnippet("get snippet text using javascript?", 1)); // get
console.log(getSnippet("get snippet text using javascript?", 3)); // get
console.log(getSnippet("get snippet text using javascript?", 10)); // get snippet
console.log(getSnippet("get snippet text using javascript?", 11)); // get snippet
時返回的字符串比原字符串短,您可以添加省略號。
function intelligentlyTruncate(text, threshhold)
{
for(var i = threshhold; i < text.length; i++)
{
if(/^\s/.test(text.substr(i, 1)))
return text.substr(0, i); // + '...' if you want the elipsis.
}
return text;
}
console.log(intelligentlyTruncate("get snippet text using javascript?", 5));
// get snippet
如果你想有一個最大的,而不是一個最小的(所以它決不會大於給定的值):
function intelligentlyTruncate(text, threshhold)
{
for(var i = threshhold - 1; i >= 0; i--)
{
if(/^\s/.test(text.substr(i, 1)))
return text.substr(0, i); // + '...' if you want the elipsis.
}
return text;
}
console.log(intelligentlyTruncate("get snippet text using javascript?", 5));
// get
函數代碼片段(str,len){ newStr = str.substring(0,len); var i = len; newStr + = str [i ++];(str [i]!='' return newStr +「...」;
}
您可以使用indexOf並指定起點來查找下一個空格。
var text = "get snipped text using javascript?";
function getComplete(str, len) {
if (str.length > len) {
var i = str.indexOf(" ", len);
return str.substring(0, i);
}
return str;
}
getComplete(text, 10) // "get snipped";
如果text.length < len ->錯誤! – vNext
編輯爲了防範長度錯誤,謝謝。 – theprogrammer
原型即興的theprogrammer的回答是:
String.prototype.getComplete = function(len) {
var str = this;
if (str.length > len) {
var i = str.indexOf(" ", len);
return str.substring(0, i);
}
return str;
}
//Usage
mystr = mystr.getComplete(500);
已測試,很好! – vNext
這很好,但是請注意,如果字符串包含'\ n',比如'get \ nsnippet text', –