Javascript Разделить строку по количеству слов - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь разделить строку по количеству слов , приведенный ниже пример разделен по числу символов .

например. У меня 25 слов содержания.

var text = `Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
    Aenean commodo ligula eget dolor. 
    Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur.`


var part1 =  text.substr(0, text.substr(0, text.length > 100 ? 100 : text.length ).lastIndexOf(" "));

var part2 =  text.substr(text.substr(0, text.length > 100 ? 100 : text.length ).lastIndexOf(" "));

console.log(part1);
console.log(part2);

вывод будет таким: часть 1

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
Aenean commodo ligula eget dolor

часть 2

Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur.

Как добиться того же вывод по количеству слов, например 10 слов в части 1 и оставшихся в части 2

примечание: формат содержимого должен печататься как есть.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Вот еще одно решение. Слова разделены пробелами и сращены посередине. Затем массив соединяется вместе с пробелами.

    var text = `Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
Aenean commodo ligula eget dolor. 
Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur.`

    
    let part2=text.split(' ').filter(Boolean);
    let part1=part2.splice(0,(part2.length/2)+1).join(" ")
    part2=part2.join(" ")
    
    console.log(part1);
    console.log(part2);
0 голосов
/ 24 апреля 2020

Вот способ, которым вы можете сделать это. Сначала я делю все слова по пробелам (предполагая, что именно так вы хотите разделить слова). Когда у меня есть массив слов, я перебираю все их и проверяю индекс, чтобы увидеть, принадлежит ли он к part1 или part2. Наконец, я возвращаю обе части в массиве, чтобы обе могли быть извлечены при вызове.

const splitWords = (text, numWords) => {
  const words = text.split(' ')
  let part1 = '', part2 = ''
  words.forEach((word, idx) => {
    if (idx < numWords) {
       part1 += ' ' + word
    } else {
        part2 += ' ' + word 
    }
  })
  return [part1.trim(), part2.trim()]
}

const [ part1, part2 ] = splitWords(text, 25)
...