- Trim (программирование)
-
Trim (программирование)
Trim или strip — часто используемое название для строковой функции, которая удаляет начальные и конечные пробелы.
Например, в Python:
' Это тест '.strip()
возвращает строку:
'Это тест'
Содержание
Варианты
Наиболее популярные варианты функции
trim
удаляют пробелы только в начале и в конце строк. Обычно они называютсяltrim
иrtrim
соответственно, или в случае языка Python, —lstrip
иrstrip
. В C# используется названиеTrimStart
иTrimEnd
, а в Common Lispstring-left-trim
иstring-right-trim
. В Паскале и в Java нет встроенных вариантов, хотя в Delphi присутствуют функцииTrimLeft
иTrimRight
.[1]Многие функции
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», либо возвращать усечённую копию строки.
Определение символов пробела
Символы, которые относят к пробелам, различаются в разных языках программирования и их реализациях. Например, C традиционно считает таковыми символы пробела, табуляции, перевода строки и возврата каретки, в то время как языки, поддерживающие юникод, обычно относят сюда все символа пробелов юникода. Некоторые реализации вместе с символами пробелом также относят сюда и управляющие символы ASCII (непечатаемые символы).
Метод
trim
в Java считает пробелами и управляющие коды, тогда как методisWhitespace()
[2] распознаёт символы пробелов юникода.Применение
Ниже приведены примеры с использованием нескольких языков программирования. Все показанные реализации возвращают новую строку и не изменяют первоначальную переменную.
Пример использования Язык программирования String.Trim([chars]) C#, Visual Basic .NET, Windows PowerShell std.string.strip(string) D (string-trim '(#\Space #\Tab #\Newline) string) Common Lisp (string-trim string) Scheme string.trim() Java Trim(String) Паскаль[3] string.strip() Python strip(string [,option , char]) REXX string:strip(string [,option , char]) Erlang string.strip Ruby trim($string) PHP Trim(String) QBasic, Visual Basic, Delphi string trim $string Tcl ALLTRIM(String) FoxPro Другие языки
В языках без встроенной функции
trim()
, для достижения сравнимой функциональности, обычно пишутся функции, выполняющие ту же задачу.AWK
В AWK, для этого можно использовать регулярные выражения:
ltrim(v) = gsub(/^[ \t]+/, "", v) rtrim(v) = gsub(/[ \t]+$/, "", v) trim(v) = ltrim(v); rtrim(v)
или:
function ltrim(s) { sub(/^[ \t]+/, "", s); return s } function rtrim(s) { sub(/[ \t]+$/, "", s); return s } function trim(s) { return rtrim(ltrim(s)); }
JavaScript
Начиная с ECMAScript 5, в JavaScript появилась[4] возможность использовать
trim()
. До её появления объекты String можно было расширять с помощью прототипа:String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); }
См. также
- Регулярные выражения
- Строковые функции (программирование)
Примечания
- ↑ Функциф trim в языке FreePascal (англ.)(Проверено 25 ноября 2009)
- ↑ Функция isWhitespace в Java (англ.)(Проверено 25 ноября 2009)
- ↑ Функция Trim в Паскале (англ.)(Проверено 25 ноября 2009)
- ↑ Blewitt, Alex ECMAScript 5 released (англ.). InfoQ (2009-12-09). Проверено 10 декабря 2009.
Ссылки
- Tcl: string trim
- Faster JavaScript Trim — сравнение нескольких реализаций
Wikimedia Foundation. 2010.
Trim — У этого термина существуют и другие значения, см. TRIM. Trim или strip часто используемое название для строковой функции, которая удаляет начальные и конечные пробелы. Например, в Python: Это тест .strip() возвращает строку: Это тест… … Википедия
Трим (значения) — Трим: Трим великан в германо скандинавской мифологии Трим (Trim) город в Ирландии Trim (программирование) (strip) функция удаления пробелов начала и конца строки … Википедия
Пробел — У этого термина существуют и другие значения, см. Пробел (значения). Пробел Пунктуация апостроф … Википедия
JavaScript — Не следует путать с Java. JavaScript Класс языка: мультипарадигменный … Википедия
Фортран — Семантика: императивный Появился в: 1957 Автор(ы): Джон Бэкус Типизация данных: строгая, статическая Основные реализации … Википедия
Флеш-память — Не следует путать с картами памяти. Не следует путать с USB флеш накопителями. У этого термина существуют и другие значения, см. Флеш. Типы компьютерной памяти Энергозависимая DRAM (в том числе DDR SDRAM) SRAM Перспективные T RAM Z RAM TTRAM Из… … Википедия
Sunday (песня Hurts) — «Sunday» Сингл Hurts из альбома Happiness … Википедия