2011-09-22 68 views
1

如果我有一个很长的字符串,让一个字符串说操纵在JavaScript

var str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu accumsan urna. Phasellus imperdiet elementum massa sit amet condimentum. Vivamus porttitor lobortis dignissim. Nam non tellus sapien, at pulvinar augue. Nulla metus mauris, cursus a sodales varius, imperdiet nec nisi. Quisque ut est quis massa sagittis pharetra quis aliquam dui. Phasellus id nisi quis mauris ultricies tristique et ut orci."; 

,我想操纵它来显示它是这样的

"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu..." 

我怎么能这样做?

+4

你不需要为jQuery的那。 –

+2

你的意思是你想从开头删除'var str =',从最后删除';'?变量的名称可以不是'str'吗?请描述规则或列举更多示例。 –

回答

5

您可以通过简单的JavaScript字符串操作做到这一点。

var limit = 30 //or wherever you want to cut it off 
str = str.substring(0, Math.Min(limit, str.length)) + '...' 

编辑:
需要Math.Min仿佛极限大于串长JavaScript的子方法把这个问题的关心。

注意:即使您的字符串太短并显示完整,也会附加“...”。有关如何避免此情况,请参见hunter's answer

+0

什么浏览器的子字符串可以让你超出范围?该文件说,如果参数比字符串长,则应该将它视为字符串长度。 – Quentin

+0

@Quentin你是对的。我在正在处理的一个页面上遇到了这个错误,但它是C#而不是JavaScript。对困惑感到抱歉。 – yoozer8

0

您可以使用substr

var limit = 100; 
str = str.substring(0,limit) + '...'; 
4

jQuery虽然提供了许多有用的预写代码,但并不针对人们进行字符串操作。

只需使用substring

var truncated = str.substring(0, 40); 
if (truncated !== str) { 
    str = truncated + "…"; 
} 
+0

对于短于40个字符的字符串,这不起作用。 – yoozer8

+0

@Jim - 是的,它的确如此。引用我链接到的页面:“如果任一参数大于stringName.length,则将其视为它是stringName.length。” – Quentin

0
var shortStr = str.substr(0, 66) + '...'; 
0

你需要学习JavaScript然后使用jQuery的!所有的字符串操作都可以用JavaScript来完成。您应该使用功能,如.substring().substr().slice()等等...

在这种情况下,你可以使用substr

str.substr(0, str.indexOf('eu') + 2) + '...'; 
0

你可以使用正则表达式替换:

str = str.replace(/^(.{0,29}[\w\d])(\b.+)?$/, function($0, $1) { 
    if($1.length < str.length) { 
     return $1+'...'; 
    } 
    return $0; 
}); 

这将:

  • 如果str比30个字符短,结果是整个字符串。
  • str是超过30个字符,它将被切断在一个字边界和...将被追加到它。这将确保你不结果落得像Lorem ipsum dolor sit amet,...(与...前的逗号)

要改变它在66个字符截断......

str = str.replace(/^(.{0,65}[\w\d])(\b.+)?$/, function($0, $1) { 
    if($1.length < str.length) { 
     return $1+'...'; 
    } 
    return $0; 
});