В следующей демонстрации представлена функция, которая разбивает текст после двоеточия в заданной строке. Эта функция визуализирует текст в HTML или возвращает отредактированный текст как строковое значение для использования в другом месте.
/**
* colonBreak(data, DOM = false)
=------------------------------=
* Edit text in a particular format pattern:
* Insert a line break after any colon.
=------------------------------------------=
* @param {string} data - There are two forms of strings that can be accepted:
* 1. a literal string or template literal
* 2. the selector of a DOM element that has the text
* @param {boolean} DOM - If undefined it defaults to false
* true: data represents the selector of a DOM element
* text of DOM element will be formatted
* false: data is the string to be formatted
=----------------------------------------------------------------------------=
* @return {string} if DOM is false, a formatted string will be returned.
* or
* {undefined} if DOM is true, undefined will be returned and the DOM
* element text content will be formatted
*/
Объяснение
При работе с текстом элементов DOM , HTML форматирует текст по умолчанию, чтобы нормализовать несколько пробелов и разрывов строк. Свойство .innerText
используется для сохранения пробелов и переносов строк (\n
не игнорируется). .innerText
или .textContent
можно использовать для извлечения текста, но важно применить .innerText
для визуализации отформатированной строки обратно в элемент DOM.
string = node.innerText;
Сердце этой функции состоит из .split()
метод witch разбивает строку с помощью разделителя RegExp на массив строк:
string.split(/([\w]+:)\s*/)...
Инструкции для разделителя RegExp следующие:
(
... )
захватить совпадение в скобках и использовать его в качестве замены [
... ]
сопоставить литералу и / или классу каждого символа и / или мета- символ \w
метасимвол, который соответствует любому буквенно-цифровому символу c (включая подчеркивания) +
квантификатор, указывающий совпадение один или более последовательных экземпляров предшествующего ему совпадения :
буквенное двоеточие \s
метасимвол, который соответствует пробелу *
квантификатор как +
но соответствует ноль или больше