Oříznout

Trim ( angl.  trim  - trim, trim; v některých jazycích - strip ) - funkce řetězce , která odstraňuje počáteční a koncové mezery .

Například v Pythonu :

'Toto je test' . proužek ()

vrátí řetězec:

'Tohle je zkouška'

Nejoblíbenější varianty funkce trimodstraňují mezery pouze na začátku a na konci řádků. Obvykle jsou pojmenovány ltrima rtrimrespektive, nebo v případě jazyka Python , - lstripa rstrip. C# používá TrimStarta TrimEnd, zatímco Common Lisp string-left-trim používá a string-right-trim. V Pascalu a Javě nejsou žádné vestavěné možnosti , ačkoli Delphi má TrimLefta TrimRight. [jeden]

Mnoho funkcí trimmá volitelný parametr k určení seznamu znaků, které mají být odstraněny. Například PHP a Python takový volitelný parametr umožňují, zatímco Pascal a Java ne. Funkce string-trimjazyka Common Lisp vyžaduje parametr (nazývaný character-bag ). V C++ knihovna Boost definuje znaky mezer podle národního prostředí a také nabízí možnosti pro parametr predikátu pro výběr znaků, které se mají odstranit.

V některých případech trimvrátí určitý výsledek, pokud po operaci odstranění nezůstanou žádné znaky. Například StringUtils z projektu Apache Jakarta má funkci nazvanou stripToNull, která místo toho vrací nullprázdný řetězec.

Alternativou k odstranění řetězce je normalizace bílých znaků, kde kromě odstranění bílých znaků na koncích řetězce jsou všechny sekvence bílých znaků v řetězci nahrazeny jednou mezerou. Normalizaci mezer provádějí Trim()tabulkové aplikace (včetně Excelu , Calc , Gnumeric a Google Docs ) a funkce normalize-space()v XSLT a XPath .

Zatímco většina algoritmů vrací nový (zkrácený řetězec), některé modifikují původní řetězec na místě transformací datové struktury. Knihovna Boost umožňuje buď zkrácení "na místě", nebo vrácení zkrácené kopie řetězce.

Znaky, které se označují jako mezery, se mezi programovacími jazyky a jejich implementacemi liší. Například v C jsou znaky mezera, tabulátor, odřádkování a návrat vozíku tradičně považovány za takové, zatímco jazyky podporující Unicode zde obecně zahrnují všechny znaky Unicode. Některé implementace obsahují kromě bílých znaků také řídicí znaky ASCII (netisknutelné znaky).

Metoda trimv Javě počítá únikové kódy jako mezery, zatímco metoda isWhitespace()[2] rozpoznává unicode mezery .

Aplikace

Implementace v některých programovacích jazycích:

Příklad použití Programovací jazyk
String .Trim([ znaky ]) C# , Visual Basic .NET , Windows PowerShell
std.string.strip( řetězec ) D
(string-trim '(#\Mezerník #\Tab #\Nový řádek) řetězec ) Lisp obecný
(string-trim string ) Systém
string.trim () Java , JavaScript
Oříznout ( řetězec ) Pascal [3]
string.strip () Krajta
strip( string [, option , char ]) REXX
string: strip( string [, option , char ]) Erlang
provázek .proužek rubín
trim( $string ) PHP
Oříznout ( řetězec ) QBasic , Visual Basic , Delphi
strunový trim $string tcl
ALLTRIM ( řetězec ) FoxPro

V jazycích bez vestavěné funkce trim()je pro dosažení srovnatelné funkčnosti běžné psát funkce, které provádějí stejný úkol.

Například v awk k tomu můžete použít regulární výrazy :

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

nebo:

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

JavaScript byl schopen používat trim()[4] od ECMAScript 5, předtím bylo možné objekty String rozšířit o prototyp :

Řetězec . prototyp . trim = function () { return this . nahradit ( /^\s+|\s+$/g , "" ); }

Poznámky

  1. Funkce oříznutí FreePascal Archivováno 15. dubna 2009 na Wayback Machine  ( zpřístupněno  25. listopadu 2009)
  2. Funkce isWhitespace v Javě byla archivována 27. února 2009 na Wayback Machine  ( přístup  25. listopadu 2009)
  3. Funkce Trim v Pascalu Archivováno 27. února 2009 na Wayback Machine  ( zpřístupněno  25. listopadu 2009)
  4. Alex Blewitt. Vydán ECMAScript 5  . InfoQ (9. prosince 2009). Získáno 10. prosince 2009. Archivováno z originálu 28. března 2012.

Odkazy