0

大きなテキスト ブロックを受け取り、それを 995 文字のブロックに分割し、各ブロックを配列にプッシュするコードを作成しました。ただし、これにより、995 文字の行にあるときに単語が分割されることがよくあります。コードを編集して、テキストの各ブロックが 995 文字の長さにできるだけ近くなるようにするにはどうすればよいでしょうか (それ以下にする必要があります)。 ?

function cutUp() {
var PAname = prompt("Determine PA type and PA Name (e.g. 5=mexican food=");
var chunks = [];
var OGstring = document.getElementById('PATypes').value;
var my_long_string = OGstring.split('1').join('').split('2').join('').split('3').join('').split('4').join('').split('5').join('').split('6').join('').split('7').join('').split('8').join('').split('9').join('').split('0').join('').split('[edit]').join('').split('[citation needed]').join('').split('[').join('').split(']').join('').split('(').join('').split(')').join('');



var i = 0;
var n = 0;
while (n < my_long_string.length) {
    chunks.push(my_long_string.slice(n, n += 995));

}
if (chunks[0] != null) {
    $('PAType=Name=Value8').innerHTML = PAname + chunks[0];
}
if (chunks[1] != null) {
    $('PAType=Name=Value9').innerHTML = PAname + chunks[1];
}
if (chunks[2] != null) {
    $('PAType=Name=Value10').innerHTML = PAname + chunks[2];
}
if (chunks[3] != null) {
    $('PAType=Name=Value11').innerHTML = PAname + chunks[3];
}
if (chunks[4] != null) {
    $('PAType=Name=Value12').innerHTML = PAname + chunks[4];
}
if (chunks[5] != null) {
    $('PAType=Name=Value13').innerHTML = PAname + chunks[5];
}
if (chunks[6] != null) {
    $('PAType=Name=Value14').innerHTML = PAname + chunks[6];
}
if (chunks[7] != null) {
    $('PAType=Name=Value15').innerHTML = PAname + chunks[7];
}
if (chunks[8] != null) {
    $('PAType=Name=Value16').innerHTML = PAname + chunks[8];
}
if (chunks[9] != null) {
    $('PAType=Name=Value17').innerHTML = PAname + chunks[9];
}

////this is to create new exportable table
$('exportTable').innerHTML += $('tableContents').innerHTML;
$("exportTable").removeClass('hidden');
///this resets to default
defaultReset();

} </p>

4

1 に答える 1

0

特定の Javascript の知識がなくても、995 文字を先読みし、その文字自体がスペースでない場合は、スペースが見つかるまで開始方向に戻り、そこで切り捨てます。

C ライクな疑似コードではchars、文字の大きな配列を使用します。

for(truncOffset = 995; truncOffset > 0; truncOffset--):
{  
    if chars[currentLoc + truncOffset] = ' ': /* a space character */ break;  
}

すすぎ、味わうために繰り返します。そのスペースを見つけたら、移動currentLocすることを忘れないでください。currentLoc + truncOffset

于 2012-08-03T21:05:24.773 に答える