Регулярные выражения для вставки «\ r» через каждые n символов в строке и перед полным словом (в основном это функция переноса слов) - PullRequest
3 голосов
/ 10 февраля 2010

Я новичок в JavaScript и регулярных выражениях. Я пытаюсь автоматически отформатировать текстовый документ с определенным количеством символов в строке или поставить "\ r" перед словом.

Это функционально аналогично Wordwrap, найденному во многих текстовых редакторах.

Например. Я хочу 10 символов в строке

Оригинал: меня зовут Дейви Блю.

Изменено: Меня зовут \ ris Davey \ rBlue.

Смотрите, если 10-й символ - это слово, оно помещает все это слово в новую строку.

Я думаю, что в какой-то степени должно работать следующее / /ndom1,10casts/ (Это должно найти любые 10 символов, верно?)

Не уверен, что делать с остальными.

Пожалуйста, помогите.

Ответы [ 4 ]

13 голосов
/ 10 февраля 2010

в основном

 text = text.replace(/.{1,10} /g, "$&\n")

Я уверен, что вы имели в виду "\ n", а не "\ r"

3 голосов
/ 10 февраля 2010

Это должно быть регулярное выражение? Я бы сделал что-то вроде этого:

var str = "My name is Davey Blue.",
    words = str.split(/(\s+)/);
for (var i=0,n=0; i<words.length; ++i) {
    n += words[i].length;
    if (n >= 10) {
        words[i] = "\n" + words[i];
        n = 0;
    }
}
str = words.join("");
1 голос
/ 10 февраля 2010

Это сделает трюк с регулярным выражением.

myString.replace(/((\w|\s){0,9}\s|\w+\s|$)/g, "$1\r")

(заменить "9" на N-1, если N - желаемая длина линии)

В каждой позиции в строке он пытается сделать следующее в следующем порядке:
1. попробуйте сопоставить до 9 символов с жадностью (= столько, сколько возможно), за которым следует пробел (таким образом, всего не более 10 символов, оканчивающихся пробелом), затем вставьте \ r после этого (посредством замены строки) 1007 * 2. если это не удастся (поскольку не может быть найдено ни одно слово длиной менее 10 символов), оно соответствует одному слову (независимо от его длины) плюс пробел, а затем вставляет \ r после этого
3. соответствует концу строки и вставляет \ r

0 голосов
/ 10 февраля 2010

Я не думаю, что регулярное выражение сделает это за вас. Я бы заглянул на javascript wordwrap, я уверен, что кто-то написал библиотеку, чтобы сделать это для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...