編集:人は少し混乱しているように見えるので、私は明確にしようとします。JavaScriptで書式設定された段落に文字列を変換する
基本的に、取る文字列は可変長で、任意の数の行にすることができます。
ヒッチは、単語をカットオフしない文字列です。したがって、別の例として、文字列:
「飛び跳ねのキツネ」は2つの別々の行に分かれています。 中間の文字は「u」なので、2行は次のようになります。 行1: 'ジャンプ' 行2: 'Fox' 単語が途切れないようにします。それは2つの制限です。
だから、私はこの質問だ:
は、単一行のテキスト文字列と行の最大値を考えると、入力されたテキストの書式を設定する関数を記述、すなわち:均等に文字に基づいてテキストを分割し、返却を文字列の各セクションの改行。しかし、行を切り落とさないでください。つまり、1000文字と2行の場合は、最初の行のサイズを大きくして、500文字目の途中の最後の単語の終わりを取得できます。
私はJavaScriptで解決しようとしています。任意のヒント?この空白の書式設定を使わないで行を返すだけでも簡単ですが、私は完全に失われています。
function formatString(string, numlines) {
var length = string.length;
console.log(length);
var words = string.split(' ');
var paraLength = parseInt(string.length/numlines);
console.log(paraLength)
var paragraph = [];
for(var i=0; i<length;) {
// console.log('i is: ', i);
console.log('start of string is: ', string.charAt(i));
console.log('end of string is: ', string.charAt(i+paraLength+1));
console.log('if true? ', string.indexOf(i))
if (string.charAt(i+paraLength) == ' ') {
var thing = string.substr(i,i+paraLength);
console.log('if thing is: ', thing);
i+=paraLength;
console.log('if i is: ', i);
paragraph.push(thing);
} else {
var thing = string.substr(i,i+paraLength);
console.log('else thing is: ', thing);
console.log('blah is: ',i+paraLength+1 >= length);
while (string.charAt(i+paraLength) != ' ' && i+paraLength < length) {
thing.concat(string.charAt(i+paraLength+1));
thing.concat('hi')
console.log('else thing is: ', thing);
i+=1;
console.log('i is: ', i);
}
paragraph.push(thing);
i+= paraLength;
}
}
return paragraph.map(function(d) {
console.log('d is: ', d);
return d;
}).join('')
}
console.log(formatString('hello world blah blah blah', 2));
あなたは[ 'string.slice()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice)のパワーを必要とします。 –
多くの 'n '行がある限り、特定の行の長さにハード制限がありますか? –
ハード制限はありません。それはちょうど文字列に含まれているもののために変更することができます – Tulun