Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
В компьютерном программировании, обрезка (trim) или удаление пробелов по краям (strip) — это операция над строками, при которой удаляются начальные и конечные пробелы. Например, строка (в апострофах)
In computer programming, trimming (trim) or stripping (strip) is a string manipulation in which leading and trailing whitespace is removed from a string. For example, the string (enclosed by apostrophes)
' this is a test '
' this is a test '
после обрезки станет
would be changed, after trimming, to
'this is a test'
'this is a test'
Левая или правая обрезка
Наиболее популярные варианты функции обрезки удаляют только начало или конец строки. Обычно они называются ltrim и rtrim соответственно, или, в случае Python: lstrip и rstrip. В C# используются TrimStart и TrimEnd, а в Common Lisp – функции обрезки строки слева и справа. В Pascal и Java эти варианты не встроены, хотя в Object Pascal (Delphi) есть функции TrimLeft и TrimRight.
The most popular variants of the trim function strip only the beginning or end of the string. Typically named ltrim and rtrim respectively, or in the case of Python: lstrip and rstrip. C# uses TrimStart and TrimEnd, and Common Lisp string left trim and string right trim. Pascal and Java do not have these variants built in, although Object Pascal (Delphi) has TrimLeft and TrimRight functions.
Параметризация списка символов белых пробелов
Многие функции обрезки имеют необязательный параметр для указания списка символов, которые нужно удалить, вместо символов пробела по умолчанию. Например, в PHP и Python этот параметр является необязательным, а в Pascal и Java его нет. В функции обрезки строк Common Lisp этот параметр (называемый набором символов) является обязательным. Библиотека C++ Boost определяет пробельные символы в соответствии с локалью, а также предлагает варианты с параметром-предикатом (функтором) для выбора символов, подлежащих удалению.
Many trim functions have an optional parameter to specify a list of characters to trim, instead of the default whitespace characters. For example, PHP and Python allow this optional parameter, while Pascal and Java do not. With Common Lisp's string trim function, the parameter (called character bag) is required. The C++ Boost library defines space characters according to locale, as well as offering variants with a predicate parameter (a functor) to select which characters are trimmed.
Специальное значение обратной связи пустой строки
Необычный вариант функции обрезки строк возвращает специальный результат, если после обрезки не остается ни одного символа. Например, StringUtils из Apache Jakarta имеет функцию stripToNull, которая возвращает null вместо пустой строки.
An uncommon variant of trim returns a special result if no characters remain after the trim operation. For example, Apache Jakarta's StringUtils has a function called stripToNull which returns null in place of an empty string.
Нормализация пространства
Нормализация пробелов — это связанная операция над строками, при которой, помимо удаления пробелов в начале и конце строки, любая последовательность пробельных символов внутри строки заменяется на одиночный пробел. Нормализация пробелов выполняется функцией "Trim" в приложениях для работы с электронными таблицами (включая Excel, Calc, Gnumeric и Google Docs), а также функцией "normalize-space" в XSLT и XPath.
Space normalization is a related string manipulation where in addition to removing surrounding whitespace, any sequence of whitespace characters within the string is replaced with a single space. Space normalization is performed by the function named Trim in spreadsheet applications (including Excel, Calc, Gnumeric, and Google Docs), and by the normalize space function in XSLT and XPath,
Обрезка на месте
В то время как большинство алгоритмов возвращают новую (обрезанную) строку, некоторые изменяют исходную строку непосредственно. Примечательно, что библиотека Boost позволяет выполнять обрезку непосредственно в строке или возвращать обрезанную копию.
While most algorithms return a new (trimmed) string, some alter the original string in place. Notably, the Boost library allows either in place trimming or a trimmed copy to be returned.
Определение белого пространства
Характеры, которые считаются пробельными, различаются в зависимости от языков программирования и их реализаций. Например, в языке C традиционно учитываются только пробел, табуляция, перевод строки и возврат каретки, в то время как языки, поддерживающие Unicode, обычно включают все пробельные символы Unicode. Некоторые реализации также включают в себя ASCII-коды управления (непечатаемые символы) вместе с пробельными символами. Метод `trim` в Java рассматривает пробелы ASCII и коды управления как пробельные, в отличие от метода `isWhitespace` в Java, который распознает все пробельные символы Unicode. Функция `Trim` в Delphi считает символы от U+0000 (NULL) до U+0020 (SPACE) пробельными.
The characters which are considered whitespace varies between programming languages and implementations. For example, C traditionally only counts space, tab, line feed, and carriage return characters, while languages which support Unicode typically include all Unicode space characters. Some implementations also include ASCII control codes (non printing characters) along with whitespace characters. Java's trim method considers ASCII spaces and control codes as whitespace, contrasting with the Java isWhitespace method, which recognizes all Unicode space characters. Delphi's Trim function considers characters U+0000 (NULL) through U+0020 (SPACE) to be whitespace.
Непространственные пустоты
Блок Unicode "Образцы Брайля" содержит «», шаблон Брайля без рельефных точек. Стандарт Unicode явно указывает, что он не является пробелом. Неразрывный пробел также может рассматриваться как непробельный символ для целей обрезки.
The Braille Patterns Unicode block contains , a Braille pattern with no dots raised. The Unicode standard explicitly states that it does not act as a space. The Non breaking space can also be treated as non space for trimming purposes.