разбор строк в JavaScript

Задача: Есть текст. В этом тексте надо найти первое предложение до первой точки. Если нет ни одной точки, то надо возвратить целый текст? Как это реализовать в JS? Делаю так, но как-то не получается

const partContent = this.content.split('.')[0] + ".";

Ответы (2 шт):

Автор решения: Ivan Didyk

Регулярные выражения в помощь:

const firstSentence = (this.content.match(/^.+\./) || [this.content])[0];
→ Ссылка
Автор решения: entithat

const partContent = content => {
  // Делим на части
  const part = content.split(/[.?!]/)[0];
  
  // Добавляем еще конец предложения (., !, ?)
  console.log(part + (content[part.length] || '.'));
  
  // Проверяем на наличие точки
  console.log(content[part.length] === '.' ? 'Есть точка.' : 'Нет точки.');
}

partContent('A');
partContent('A. B.');
partContent('A, B?');
partContent('A, B? C');
partContent('A... B.');

P.S. Минус первого подхода в том, что конец предложения (точка или !, ?) могут быть через несколько пробелов и тогда результат будет не ожидаемый. Чтобы это поправить стоит задуматься над использованием регулярных выражений.

Универсальная версия:

const partContent = content => {
  const part = content.match(/^([^.!?]+)([.!?]*)/);
  console.log(part[1] + (part[2] || '.'), part[2] === '.' ? 'Есть точка.' : 'Нет точки.');
}

partContent('A');
partContent('A. B.');
partContent('A, B?');
partContent('A, B? C.');
partContent('A... B.');
partContent('A!? B...');
partContent('A!!! B.');

→ Ссылка