javascript substr字符,不计算空格

时间:2018-08-26 14:57:59

标签: javascript substr

我有一个文字描述,css为

white-space: pre-wrap;

它包括空格和换行符等...

我想限制描述中的字符数而不用空格:

description = description.substr(0,100);

我当然需要保留描述格式。

我该怎么办?

5 个答案:

答案 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));

check result online!


添加了部分(方法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://sacha.me/Countable/

这是已实现示例的链接:

https://www.jqueryscript.net/form/Simple-Live-Character-Counter-with-Javascript-Countable.html

它是如此简单易用,您只需要在要计数的元素旁边添加count,检查避免空格,点,逗号等的选项即可。

希望我的帖子对您​​有帮助

祝你好运