如果我有一个长串,请说
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..."
我该怎么做?
答案 0 :(得分:6)
尝试使用substring()
方法
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
返回一个索引与另一个索引之间或字符串末尾的字符串的子集。
var max = 20;
str = str.length > max
? str.substring(0, max - 3) + "..."
: str;
答案 1 :(得分: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了解如何避免这种情况。
答案 2 :(得分:4)
jQuery虽然提供了许多有用的预编写代码,但并不针对那些进行字符串操作的人。
只需使用substring
即可var truncated = str.substring(0, 40);
if (truncated !== str) {
str = truncated + "…";
}
答案 3 :(得分:0)
您可以使用substr
var limit = 100;
str = str.substring(0,limit) + '...';
答案 4 :(得分:0)
var shortStr = str.substr(0, 66) + '...';
答案 5 :(得分:0)
你需要学习JavaScript然后使用 jQuery!所有字符串操作都可以使用JavaScript完成。您应该使用.substring()
.substr()
.slice()
之类的功能等等......
在这种情况下,您可以使用substr
:
str.substr(0, str.indexOf('eu') + 2) + '...';
答案 6 :(得分: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;
});