Trim (программирование)
Trim или strip — в программировании, функция для работы со строкой, которая удаляет её начальные и конечные символы пробела.
Например, в Python:
<source lang="python">' Это тест '.strip()</source>
возвращает строку:
'Это тест'
Варианты
Наиболее популярные варианты функции trim удаляют только в начале и в конце строк. Обычно они называются ltrim и rtrim соответственно, или в случае языка Python, — lstrip и rstrip. В C# используется название TrimStart и TrimEnd, а в Common Lisp string-left-trim и string-right-trim. В Паскале и в Java нет встроенных вариантов, хотя в Delphi (объектно-ориентированном происходящем от паскаля языке Borland'а) присутствуют функции TrimLeft и TrimRight.[1]
Многие функции trim вместо по умолчанию обработки символов пробела имеет опциональный параметр для определения списка символов к удалению. Например, PHP и Python позволяют задавать такой опциональный параметр, в то время как Паскаль и and 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 Явы считает пробелами и управляющие коды, тогда как явовский метод 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 можно было расширять с помощью прототипа:
<source lang="javascript"> String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
} </source>
См. также
Примечания
- ↑ Функциф trim в языке FreePascal (англ.)(Проверено 25 ноября 2009)
- ↑ Функция isWhitespace в Яве (англ.)(Проверено 25 ноября 2009)
- ↑ Функция Trim в Паскале (англ.)(Проверено 25 ноября 2009)
- ↑ Blewitt, Alex ECMAScript 5 released (англ.). InfoQ (2009-12-09). Проверено 10 декабря 2009.
Ссылки
- Tcl: string trim
- Faster JavaScript Trim - compares various JavaScript trim implementations
| Программирование | Это незавершённая статья о программировании. Вы можете помочь проекту, исправив и дополнив её. |
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....