我想在长度为 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
可以使用正则表达式来匹配它。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));