2017-09-18 5 views
1

私は文字列内の特定の間隔で改行文字を挿入するよう求めています。期待リターンの例:新しい行の文字を正しい間隔で文字列に挿入するにはどうすればよいですか?

insertNewLine('Happiness takes wisdom and courage', 20) => 'Happiness takes\nwisdom and courage' 

insertNewLine('Happiness takes wisdom and courage', 30) => 'Happiness takes wisdom and\ncourage' 

これまでのところ、私は簡単なアルゴリズムはこのことだろう実装することを考えてきた:

  • は、所望の幅に渡され、同じチャンクに文字列を分割
  • 各チャンク内のスペースの最後のインデックスを見つけて\ nに置き換えてください。

これは私が得ているリターンであるため、明らかにアルゴリズムに欠陥があります。 verの文字列チャンクの配列を返し、常に各チャンクに改行文字を追加します。これは正しい出力です:

insertNewLine('Happiness takes wisdom and courage', 20) => 'Happiness takes\nwisdom and\ncourage' 

期待される結果を得るにはどのようなアルゴリズムが良いでしょうか? [:私は特定のインデックスに文字列を挿入するにはどうすればよいのJavaScript](HTTPS:/

const _ = require('underscore') 
const insertNewLine = (text, width) => { 
    if (width < 15) return 'INVALID INPUT'; 
    if (text.length <= width) return text; 
    else { 
    const arrayOfText = text.split(''); 
    const temparray = []; 
    for (let i = 0; i < arrayOfText.length; i += width) { 
     temparray.push(arrayOfText.slice(i, i + width)); 
    } 
    return temparray.map((elem, i, arr) => { 
     elem[_.lastIndexOf(elem, ' ')] = '\n'; 
     return elem.join(''); 
    }).join(''); 
    } 
}; 
+1

が重複する可能性を試してみてください:ここで

はあまりにもコードです/stackoverflow.com/questions/4313841/javascript-how-can-i-insert-a-string-at-a-specific-index) –

答えて

1
function replaceSpace(tx,n) { //tx is the text and n is the number 
    var br=0; 
    while(n-->0) { 
     if(tx[n]==" ") { 
      br = n; 
      break; 
     } 
    } 
    return tx.substring(0,br)+"\n"+tx.substring(br,tx.length); 
} 
+0

改行を単語の途中に挿入しないでください。 –

+0

20の意味は何ですか - 20位ですか? はそれに少しの説明が必要です..insertNewLine( 'Happinessは知恵と勇気を取る'、20) –

+0

行は20文字以内でなければならないことを意味します(改行を除く)。白い)スペース。 –

0

は、この

function insertNewLine(str, pos){ 
    var str = str.split("") 
    for (var i = pos-1; i < str.length-1; i+=pos) { 
     str[i] = "\n" 
    } 
     return str.join("") 
} 
関連する問題