@Now159

Как сделать перенос слов текса правильно?

export default {
  name: 'symbols',
  data: () => ({}),

  methods: {
    wordWrap(text) {
      const regex =
        /[бвгджзйклмнпрстфхцчшщ]+[аеёиоуыэюя][бвгджзйклмнпрстфхцчшщ](?=[бвгджзйклмнпрстфхцчшщьъ ])[ьъй]?|[бвгджзйклмнпрстфхцчшщ]+[аеёиоуыэюя][й]?|[аеёиоуыэюя][бвгджзйклмнпрстфхцчшщ](?=[бвгджзйклмнпрстфхцчшщьъ ])[ъь]?|[аеёиоуыэюя](?=[а-я]{2})|(?<= +)[^\s]+(?= +|$)/gmi
      let out = '', offset = 0, prev = 0, pass = false
      let matches = text.matchAll(regex)
      for (const m of matches) {

        let hyphen = text[prev - 1] == ' ' ? '' : `-`
        out += text.substring(offset, prev) + hyphen + '\n'
        offset = prev

        if (!pass) prev = m.index
        pass = m[0].length < 2
      }
      out += text.substring(offset)
      return out
    },
  },
}


Всем привет, нужно реализовать в тексте перенос слова по слогам если не хватает ширины контейнера. Желательно максимально грамотный перенос, функция которую я демонстрирую, принципе устраивает, но появляются (-) и лишнии пробелы в слогах. Помогите пожалуйста разобраться, ну или может другой вариант предложите, буду благодарен
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
.container {
  hyphens: auto
}

В некоторых сложных случаях нужно вставлять в текст &shy;, можно регуляркой как в примере, но это грамматически не всегда верно. А вот руками ничего не надо резать. Да и для русского языка автопереносы вставляются вполне хорошо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы