JS-分割字符串

/ 0评 / 0

遇到一个实际需求,有一段很长的中英文混合的文字,需要将其分割,怎么分割呢?
其中规定一个中文字符长度为2,一个英文字符长度为1。
要求满足每一行的长度(最后一行可以小于)都等于指定的长度。

示例文本:

这this是is一a段文字sentence。,。这this是is一a段文字sentence。,。这this是is一a段文字sentence。,。这this是is一a段文字sentence。,。这this是is一a段文字sentence。,。这this是is一a段文字sentence。,。

输出:

这this是is一a段文字sentence。,。这this是i
s一a段文字sentence。,。这this是is一a段文字
sentence。,。这this是is一a段文字sentence。
,。这this是is一a段文字sentence。,。这thi
s是is一a段文字sentence。,。

代码:

cutString: function (str, len) {
  var strList = [];
  var i, j = 0;
  var regexp = /[^\x00-\xff]/g;

  var m = Math.floor(len / 2);

  for (i = j; i < str.length; i++) { if (str.substring(j, i).replace(regexp, "aa").length >= m) {
      strList.push(str.substring(j, i));
      j = i;
      continue;//便于理解
    }
  }
  if (str.substring(j, i).replace(regexp, "aa").length < m) {
    strList.push(str.substring(j, i));
  }

  return strList;

}

分析:
关键之处在于substring(j, i)中i-j并不是固定的,根据上一次循环得到j,然后i++,获得一段满足长度要求的字符串(将其存到列表中)后,更新j。

发表评论

电子邮件地址不会被公开。 必填项已用*标注