Переместить слова из одной буквы на следующую строку

У меня есть отзывчивая веб-страница. Можно ли автоматически перемещать слова одной буквы в конце строки на следующую строку.

Пример:

Картинка стоит
тысяча слов.

вместо:

Картинка стоит
тысяча слов.

2 ответа

Глупо, но работает. Просто измените значения в массиве слов и элементов в соответствии с вашими потребностями

function removeSingleCharLineBreak(){
var words = ['a', 'i', 's', 'z', 'v', 'k', 'o', 'u', 
    'A', 'I', 'S', 'Z', 'V', 'K', 'O', 'U', '€',
    'na', 'za', 'do', 'Na', 'Za', 'Do',
    ];

var elements = ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'td', 'td'];

$.each(words, function(index, word){

    var regex = new RegExp(" " + word + " ", "g");

    $.each(elements, function(index, element){

        $(element + ':contains( ' + word + ' )').each(function(){

            if (word == '€') 
            {
                $(this).html(
                    $(this).html().replace(regex, ' ' + word + ' ')
                );       
            }
            else
            {
                $(this).html(
                    $(this).html().replace(regex, ' ' + word + ' ')
                );                    
            }

        });

    });

});

}

Это возможно, да. Один из способов сделать это будет с textContent.replace(/( \S) /g, "$1\n") и свойство CSS white-space: pre-line, Обратите внимание, что \w не подходит для сопоставления букв естественного языка в JavaScript, поскольку оно соответствует только буквенно-цифровым символам ASCII.

Вы также можете предотвратить разрыв строки после однобуквенных слов, заменив пробел между ними и следующим словом неразрывным пробелом textContent.replace(/( \S) /g, "$1\xa0")

Другие вопросы по тегам