Меню
Главная
Случайная статья
Настройки
|
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 .[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», либо возвращать усечённую копию строки.
Символы, которые относят к пробелам, различаются в разных языках программирования и их реализациях. Например, в Си традиционно считается таковыми символы пробела, табуляции, перевода строки и возврата каретки, в то время как языки, поддерживающие юникод, обычно относят сюда все символы пробелов юникода. Некоторые реализации вместе с символами пробелом также относят сюда и управляющие символы 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, JavaScript
|
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
|
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() [4] появилась начиная с ECMAScript 5, до этого объекты String можно было расширять с помощью прототипа:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
}
Примечания
- Функция trim в языке FreePascal Архивная копия от 15 апреля 2009 на Wayback Machine (англ.) (Дата обращения: 25 ноября 2009)
- Функция isWhitespace в Java Архивная копия от 27 февраля 2009 на Wayback Machine (англ.) (Дата обращения: 25 ноября 2009)
- Функция Trim в Паскале Архивная копия от 27 февраля 2009 на Wayback Machine (англ.) (Дата обращения: 25 ноября 2009)
- Alex Blewitt. ECMAScript 5 released (англ.). InfoQ (9 декабря 2009). Дата обращения: 10 декабря 2009. Архивировано 28 марта 2012 года.
Ссылки
|
|