こんにちは、この種の機能が必要なテキストエリアで作業しています。構成の最大行数と行あたりの最大文字数を取得します。しかし、テキストをこの構成値に分割するためのアルゴリズムは考えられません。簡単ですが、ユーザーが自分でテキストを壊す可能性があることを考慮する必要があり、これを含める必要があります...誰か助けてもらえますか?
また、等幅フォントを使用していないことにも注意してください。
私が達成しようとしていることを示すいくつかのコードを書きました:
splitIntoLines:function (str, lines, maxCharactersPerLine) {
var strLen = str.length,
counter = maxCharactersPerLine,
newStr = '';
if (str.length > 0) {
for (var i = 0; i < strLen; i++) {
newStr += str[i];
counter -= 1;
if (str[i] === '\n' || str[i] === '\r\n' || counter < 0) {
counter = maxCharactersPerLine;
}
if (counter === 0 && this.countLines(newStr) < lines) {
newStr += this.newLine;
}
}
}
if(newStr.length > this.maxChars){
newStr = newStr.substring(0, this.maxChars)
}
return newStr;
}
この関数は、keyUp イベントごとに呼び出されます。しかし、それは最善の方法ではなく、いくつかのバグがあると思います。