8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

正则表达式按特定长度拆分字符串并忽略不完整的单词

DBS 1月前

55 0

我想在长度为 30(包括空格)时分割文本。到目前为止我的工作:var m = \'Lorem ipsum dolor amet, co Lorem ipsum dolor amet, co Lorem ipsum dolor amet, co Lorem ipsum dolor ...

我想拆分长度为 30(包括空格)的文本。我目前的工作:

var m = "Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co Lorem ipsum dolor sit amet, co";

var spacedM = m.split(' ');
var charCount = 0;

for(var i = 0; i < spacedM.length; i++){

    charCount = charCount + spacedM[i].length + 0.5; 

if(charCount <= 30 && $('#address1').text().length <= 30){
    $('#address1').append(spacedM[i]+' ');
} else if(charCount > 30 && charCount <= 60 && $('#address2').text().length <= 30) {
    $('#address2').append(spacedM[i]+' ');
} else if(charCount > 60 && charCount <= 90 && $('#address3').text().length <= 30) {
        $('#address3').append(spacedM[i]+' ');
}

}

$('#address1').append($('#address1').text().length);
$('#address2').append($('#address2').text().length);
$('#address3').append($('#address3').text().length);

//output
Lorem ipsum dolor sit amet, co 31
Lorem ipsum dolor sit amet, co 31
Lorem ipsum dolor sit amet, co 31

看起来还行。但这也是一种黑客行为。不是吗?我欢迎任何改进此解决方案的建议。因为此代码将用于拆分旧数据的地址,以将其映射到地址的 3 个字段内。以下是我的 jsfiddle: https://jsfiddle.net/u11p6xx4/4/

更新:我不想拆分单词。因为如果地址中的单词是 1 个单词,它们就不能拆分成 2 个部分。因此,当字符少于 30 个时,实际上是拆分地址,但不拆分单词。字符长度可以是 28,然后继续在 #address2 中

示例地址: Blok 53-11-04 Apartment Flamingo, Keramat Jaya 2 Persiaran Gurney

预期的 :

Blok 53-11-04 Apartment
Flamingo, Keramat Jaya 2
Persiaran Gurney
帖子版权声明 1、本帖标题:正则表达式按特定长度拆分字符串并忽略不完整的单词
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由DBS在本站《regex》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 可以使用正则表达式来匹配它。https https://regex101.com/r/IszFAZ/1

    并且可以支持任意长度的最后一个单词。

    var m = "Lorem ipsum dolor sit amet, c1 Lorem ipsum dolor sit amet, co2 Lorem ipsum dolor sit amet, coo3 Lorem ipsum dolor sit amet, c4";
    console.log(m.match(/(?!\s).{30,}?(?=\s|$)/g));
返回
作者最近主题: