我有一个文字描述,css为
white-space: pre-wrap;
它包括空格和换行符等...
我想限制描述中的字符数而不用空格:
description = description.substr(0,100);
我当然需要保留描述格式。
我该怎么办?
答案 0 :(得分:2)
您需要遍历字符串的所有字符,并计算非空格(或所需的任何模式)的所有字符,一旦达到限制,就知道必须在何处截断字符串:< / p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table-one">
<tr>
<th>Name</th>
<th>Email</th>
<th>Where are you</th>
<th>What are you</th>
</tr>
<tr>
<td>Alfreds</td>
<td>Alfreds@Alfreds.com</td>
<td>I'm here</td>
<td>Big pineapple!</td>
</tr>
<tr>
<td>Maria</td>
<td>Maria@Maria.com</td>
<td>I used to be there</td>
<td>A lamp</td>
</tr>
<tr>
<td>Anders</td>
<td>Anders@Anders.com</td>
<td>Why you ask</td>
<td>Big pineapple!</td>
</tr>
<tr>
<td>Island</td>
<td>Island@Island.com</td>
<td>I don't even know</td>
<td>Big pineapple!</td>
</tr>
<tr>
<td>Matt</td>
<td>Matt@Matt.com</td>
<td>Everywhere</td>
<td>Not Big pineapple!</td>
</tr>
</table>
答案 1 :(得分:2)
尝试此功能。这将返回准确的期望值:
function mySubstr(a/*description*/, c/*count*/){
var l=0, dif=0, p=c,
dt=[a.substr(0, c)];
while((l=dt.join("").replace(/\s/g, "").length)<c){
dt.push(a.substr(p, dif=c-l));
p+=dif;
}
return dt.join("");
}
console.log(mySubstr("1 2 $- 8 58 9&8 85 0j g fg hc 6 4 34 8", 16));
添加了部分(方法2-更新版本):
您可以尝试一下。此版本也支持多个\s
:
function Substr2(desc, c/*count*/){
var r="", s=0, m=0, res, ok;
desc.replace(/(.+?)(\s+)/g, function(a,b,d){
if(ok) return;
m+=b.length;
r+=a;
res=r.substr(0, m+s-(m-c));
if(m>=c) ok=1;
s+=d.length;
});
return res;
};
console.log(Substr2("1 2 $- 8 58 9&8 85 0j g fg hc 6 4 34 8", 16));
答案 2 :(得分:0)
没有正则表达式的另一种方法是您可以在删除空格后计算数字
description.replace(' ', '').substr(0, 100)
答案 3 :(得分:0)
也许这可以解决您的问题:
let description = "Lorem Ipsum Dolor Sit Amet Consectetur Adipisicing Elit Sed Do Eiusmod Tempor Incididunt Ut Labore Et Dolore Magna Ali";
let spaceCount = ((description || '').match(/\s+/g) || []).length;
let description1 = description.substr(0, 100 + spaceCount);
// OR
let description2 = description.substr(0, 100 - spaceCount);
console.log(description1, description2)
答案 4 :(得分:0)
我使用countable.js库执行此操作,并且它的实时计数方式取决于无聊的关键点击次数。
您需要做的就是将其作为javascript链接添加到html页面上
<script src="https://cdnjs.cloudflare.com/ajax/libs/countable/3.0.1/Countable.js"></script>
这里是下载countable.js的链接
https://github.com/RadLikeWhoa/Countable
这是它可以做什么的示例
这是已实现示例的链接:
https://www.jqueryscript.net/form/Simple-Live-Character-Counter-with-Javascript-Countable.html
它是如此简单易用,您只需要在要计数的元素旁边添加count,检查避免空格,点,逗号等的选项即可。
希望我的帖子对您有帮助
祝你好运