Interested Article - Trim
- 2021-05-05
- 1
Trim ( англ. 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
имеют опциональный параметр для определения списка символов к удалению. Например,
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
.
В то время как большинство алгоритмов возвращают новую (усечённую строку), некоторые изменяют первоначальную строку , преобразуя структуру данных. Примечательно, что библиотека Boost позволяет либо усечение «in-place», либо возвращать усечённую копию строки.
Символы, которые относят к пробелам, различаются в разных языках программирования и их реализациях. Например, в Си традиционно считается таковыми символы пробела, табуляции, перевода строки и возврата каретки, в то время как языки, поддерживающие юникод , обычно относят сюда все символы пробелов юникода. Некоторые реализации вместе с символами пробелом также относят сюда и управляющие символы ASCII (непечатаемые символы).
Метод
trim
в Java считает пробелами и управляющие коды, тогда как метод
isWhitespace()
распознаёт символы пробелов
юникода
.
Применение
Реализация в некоторых языках программирования:
Пример использования | Язык программирования |
---|---|
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 , JavaScript |
Trim( String ) | Паскаль |
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 |
TrimAll( 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, "");
}
Примечания
- от 15 апреля 2009 на Wayback Machine (англ.) (Дата обращения: 25 ноября 2009)
- от 27 февраля 2009 на Wayback Machine (англ.) (Дата обращения: 25 ноября 2009)
- от 27 февраля 2009 на Wayback Machine (англ.) (Дата обращения: 25 ноября 2009)
- Alex Blewitt. (англ.) . InfoQ (9 декабря 2009). Дата обращения: 10 декабря 2009. 28 марта 2012 года.
Ссылки
- — сравнение нескольких реализаций
- 2021-05-05
- 1