Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript/jquery在不切断单词的情况下缩短字符串_Javascript_Jquery - Fatal编程技术网

javascript/jquery在不切断单词的情况下缩短字符串

javascript/jquery在不切断单词的情况下缩短字符串,javascript,jquery,Javascript,Jquery,假设我有一个字符串text=“这是一个长字符串,我不能显示”我想把它减少到10个字符,但是如果它没有以空格结束单词,我不希望字符串变量看起来像这样“这是一个长字符串,我不能显示”我希望它在出现空格之前完成单词。我正在尝试其他人建议的方法,但是“替换”似乎不起作用,但是“长度”起作用吗?我在某个地方读到javascript函数在jquery函数中不起作用,但我仍然不明白.length为什么起作用 $(document).ready(function(){ $('.article').eac

假设我有一个字符串text=“这是一个长字符串,我不能显示”我想把它减少到10个字符,但是如果它没有以空格结束单词,我不希望字符串变量看起来像这样“这是一个长字符串,我不能显示”我希望它在出现空格之前完成单词。我正在尝试其他人建议的方法,但是“替换”似乎不起作用,但是“长度”起作用吗?我在某个地方读到javascript函数在jquery函数中不起作用,但我仍然不明白.length为什么起作用

$(document).ready(function(){
    $('.article').each(function(index){
        var text = $(this).children('p').text()
        var maxLength = 6;
        var url = $(this).find('.article-link').attr('href');

        alert(text.replace(/^(.{1}[^\s]*).*/, "$1"));
        var trimmedString = text.substr(0, maxLength);
        var text = trimmedString.substr(0, Math.min(trimmedString.length, trimmedString.lastIndexOf(" ")));

        //var text = text.substring(0, 80);
        //text = text.replace(/^(.{10}[^\s]*).*/, "$1");

    });
});
Seo duit,一个角色:

var str = "The rain in Spain falls mainly on the plain.";

var l = 10;
while (str.length > l && str.substr(l-1,1) != " ") l++;

alert(str.substr(0,l));

Javascript函数肯定在jQuery函数内部工作。如果replace函数不适合您,那么您的正则表达式可能就是问题所在

此代码适用于:

$(document).ready(function() {
    $('.article').each(function(index) {
        var text = $(this).children('p').text();
        var maxLength = 6;
        var reg = new RegExp('^(.{' + maxLength + '}[^\\s]*).*');
        alert(text.replace(reg, "$1"));
    });
});

可能重复的是,我不知道如何删除另一个主题,它没有这一个那么具有描述性,也没有代码。我试图使用新的RegExp,但我一定是做错了。看到它不适用于我的div,我不知道为什么出于某种原因可能已经解决了问题,文本必须在标记前面,不能在同一行下面这里的结束标记示例这是您想要的正则表达式。它将忽略段落内容前的空格和新行字符
newregexp('^[\\s]*(.{'+maxLength+'}[^\\s]*).')
@josh