Trim ( — подрезать, подравнять; в некоторых языках — strip) — строковая функция, которая удаляет начальные и конечные пробелы.

Например, в Python: ' Это тест '.strip() возвращает строку: 'Это тест'

Наиболее популярные варианты функции trim удаляют пробелы только в начале и в конце строк. Обычно они называются ltrim и rtrim соответственно, или в случае языка Python, — lstrip и rstrip. В C# используется название TrimStart и TrimEnd, а в Common Lisp string-left-trim и string-right-trim. В Паскале и в Java нет встроенных вариантов, хотя в Delphi присутствуют функции TrimLeft и TrimRight.Функция trim в языке FreePascal

Многие функции trim имеют опциональный параметр для определения списка символов к удалению. Например, PHP и Python позволяют задавать такой опциональный параметр, в то время как Паскаль и Java этого не дают. В функции string-trim языка Common Lisp требуется параметр (называемый character-bag). В C++ библиотека Boost определяет символы пробела в соответствии с локалью, а также предлагает варианты параметра предиката для выбора того, какие символы удалять.

В отдельных случаях trim возвращает определённый результат, если после операции удаления не осталось символов. Например, в StringUtils из Apache Jakarta Project есть функция, называемая stripToNull, которая возвращает null взамен пустой строки.

Альтернативой удаления строки является нормализация пробелов, когда в дополнение к удалению символов пробела по краям строки также любые последовательности пробелов внутри строки заменяются одним пробелом. Нормализация пробелов выполняется Trim() приложениях работы с таблицами (включая Excel, Calc, Gnumeric и Google Docs), и функцией normalize-space() в XSLT и XPath.

В то время как большинство алгоритмов возвращают новую (усечённую строку), некоторые изменяют первоначальную строку in-place, преобразуя структуру данных. Примечательно, что библиотека Boost позволяет либо усечение «in-place», либо возвращать усечённую копию строки.

Символы, которые относят к пробелам, различаются в разных языках программирования и их реализациях. Например, в Си традиционно считается таковыми символы пробела, табуляции, перевода строки и возврата каретки, в то время как языки, поддерживающие юникод, обычно относят сюда все символы пробелов юникода. Некоторые реализации вместе с символами пробелом также относят сюда и управляющие символы ASCII (непечатаемые символы).

Метод trim в Java считает пробелами и управляющие коды, тогда как метод isWhitespace()Функция isWhitespace в Java распознаёт символы пробелов юникода.

Применение Реализация в некоторых языках программирования:

Пример использования Язык программированияString.Trim([chars])C#, Visual Basic .NET, Windows PowerShellstd.string.strip(string)D(string-trim '(#\Space #\Tab #\Newline) string)Common Lisp(string-trim string)Schemestring.trim()Java, JavaScriptTrim(String)ПаскальФункция Trim в Паскале string.strip()Pythonstrip(string [,option , char])REXXstring: strip(string [,option , char])Erlangstring.stripRubytrim($string)PHPTrim(String)QBasic, Visual Basic, Delphistring trim $stringTclALLTRIM(String)FoxProTrimAll(String), СокрЛП(Строка)1С

В языках без встроенной функции trim(), для достижения сравнимой функциональности, обычно пишутся функции, выполняющие ту же задачу.

Например, в awk для этого можно использовать регулярные выражения:

ltrim(v) = gsub(/^[ \t\r]+/, "", v) rtrim(v) = gsub(/[ \t\r]+$/, "", v) trim(v) = ltrim(v); rtrim(v)

или:

function ltrim(s) { sub(/^[ \t\r]+/, "", s); return s } function rtrim(s) { sub(/[ \t\r]+$/, "", s); return s } function trim(s) { return rtrim(ltrim(s)); }

В JavaScript возможность использовать trim() появилась начиная с ECMAScript 5, до этого объекты String можно было расширять с помощью прототипа:

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); }

Примечания

Ссылки Tcl: string trim Faster JavaScript Trim — сравнение нескольких реализаций

Категория:Статьи с примерами кода Python Категория:Статьи с примерами кода Ruby Категория:Строковые алгоритмы