Služba ScriptForge.String

Služba String nabízí sadu metod na zpracování řetězců. Pomocí těchto metod je možné:

Definice

Zalomení řádku

Služba String rozpoznává následující zalomení řádku:

Název symbolu

Číslo ASCII

Line feed
Vertikální tabulátor
Carriage return
Line feed + Carriage return
Oddělovač souborů
Oddělovač skupin
Oddělovač záznamů
Další řádek
Oddělovač řádků
Oddělovač odstavců

10
12
13
10 + 13
28
29
30
133
8232
8233


Prázdné znaky

Služba String rozpoznává následující prázdné znaky:

Název symbolu

Číslo ASCII

Mezera
horizontální tabulátor
line feed
vertikální tabulátor
form feed
carriage return
další řádek
nezlomitelná mezera
oddělovač řádků
oddělovač odstavců

32
9
10
11
12
13
133
160
8232
8233


Escape sekvence

Následuje seznam escape sekvencí, které lze v řetězcích použít.

Escape sekvence

Název symbolu

Číslo ASCII

\n
\r
\t

line feed
carriage return
horizontální tabulátor

10
13
9


tip

Chcete-li, aby se escape sekvence "\n" interpretovala jako skutečný řetězec, jednoduše použijte "\\n" místo "\" & Chr(10).


Netisknutelné znaky:

Za netisknutelné se považují znaky definované v databázi znaků Unicode (Unicode Character Database) jako „Other“ nebo „Separator“.

Za netisknutelné se považují také řídicí znaky (kód ASCII <= 0x1F).

Uvozovky v řetězcích:

Uvozovky přidáte do řetězců pomocí \' (jednoduchá uvozovka) nebo \" (dvojitá uvozovka). Například:

Volání služby

Před používáním služby ScriptForge.String je nutné načíst knihovnu ScriptForge pomocí:


      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
  

Následující části kódu ukazují tři způsoby volání metod služby String (jako příklad je uvedena metoda ExpandTabs):


        SF_String.ExpandTabs(...)
    

        Dim s : s = SF_String
        s.ExpandTabs(...)
    

        Dim s : s = CreateScriptService("String")
        s.ExpandTabs(...)
    

Vlastnosti

Objekt SF_String poskytuje následující vlastnosti:

Název

Pouze pro čtení

Popis

sfCR

ano

carriage return: Chr(13)

sfCRLF

ano

carriage return + line feed: Chr(13) & Chr(10)

sfLF

ano

line feed: Chr(10)

sfNEWLINE

ano

carriage return + line feed, což může být podle operačního systému:
1) Chr(13) & Chr(10) nebo
2) Linefeed: Chr(10)

sfTAB

ano

horizontální tabulátor: Chr(9)


tip

Výše uvedené vlastnosti může použít pro identifikaci nebo vkládání odpovídajících znaků do řetězců. Například line feed lze nahradit vlastností SF_String.sfLF.


List of Methods in the String Service

Capitalize
Count
EndsWith
Escape
ExpandTabs
FilterNotPrintable
FindRegex
HashStr
HtmlEncode
IsADate
IsAlpha
IsAlphaNum
IsAscii
IsDigit
IsEmail

IsFileName
IsHexDigit
IsIBAN
IsIPv4
IsLike
IsLower
IsPrintable
IsRegex
IsSheetName
IsTitle
IsUpper
IsUrl
IsWhitespace
JustifyCenter
JustifyLeft

JustifyRight
Quote
ReplaceChar
ReplaceRegex
ReplaceStr
Represent
Reverse
SplitLines
SplitNotQuoted
StartsWith
TrimExt
Unescape
Unquote
Wrap


note

Prvním argumentem je u většiny metod zpracovávaný řetězec. Vždy se předává odkazem, a zůstává tedy nezměněn. Metody jako Capitalize či Escape vrací po provedení nový řetězec.


Capitalize

Změní první písmeno každého slova vstupního řetězce na velké.

Syntaxe:


       SF_String.Capitalize(InputStr As String) As String
     

Parametry:

InputStr: Řetězec, u nějž se mají první písmena změnit.

Příklad:


       Dim sName as String : sName = "john smith"
       Dim sCapitalizedName as String
       sCapitalizedName = SF_String.Capitalize(sName)
       MsgBox sCapitalizedName 'John Smith
     

Count

Zjistí pro řetězec počet výskytů podřetězce nebo regulárního výrazu.

Syntaxe:


        SF_String.Count(InputStr As String, Substring As String[, IsRegex As Boolean][, CaseSensitive As Boolean]) As Long
      

Parametry:

InputStr: Vstupní řetězec, pro nějž se má počet zjistit.

Substring: Podřetězec nebo regulární výraz použitý pro vyhledávání.

IsRegex: Použijte True, pokud je podřetězec regulárním výrazem (výchozí = False)

CaseSensitive: Výchozí = False.

Příklad:


        ' Spočítá výskytu podřetězce "or" ve vstupním řetězci (vrátí 2)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "or", CaseSensitive := False)
        ' Spočítá slova psaná pouze malými písmeny (vrátí 7)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "\b[a-z]+\b", IsRegex := True, CaseSensitive := True)
      
tip

Podrobnosti o regulárních výrazem naleznete v dokumentaci Pythonu na stránce Regular Expression Operations.


EndsWith

Vrátí True, pokud řetězec končí zadaným podřetězcem.

Funkce vrátí False také tehdy, má-li řetězec nebo podřetězec délku 0 nebo je-li podřetězec delší než řetězec.

Syntaxe:


       SF_String.EndsWith(InputStr As String, Substring As String[, CaseSensitive As Boolean]) As Boolean
     

Parametry:

InputStr: Řetězec, který se má ověřit.

Substring: Podřetězec, který se má vyhledat na konci řetězce inputstr.

CaseSensitive: Zda se u vyhledávání rozlišuje velikost písmen (výchozí = False).

Příklad:


        ' Vrátí True, protože metoda byla zavolána s výchozím parametrem casesensitive = False
        MsgBox SF_String.EndsWith("abcdefg", "EFG")
        ' Vzhledem k parametru casesensitive vrátí False
        MsgBox SF_String.EndsWith("abcdefg", "EFG", CaseSensitive := True)
      

Escape

Převede konce řádků a tabulátor ze vstupního řetězce na odpovídající escape sekvence (\\, \n, \r, \t).

Syntaxe:


          SF_String.Escape(InputStr As String) As String
      

Parametry:

InputStr: Řetězec, který se má převést.

Příklad:


          ' Vrátí řetězec "abc\n\tdef\\n"
          MsgBox SF_String.Escape("abc" & Chr(10) & Chr(9) & "def\n")
        

ExpandTabs

Nahradí znaky tabulátoru Chr(9) znaky mezery tak, aby byl napodoben krok tabulátoru.

Při zalomení řádku se začne vytvářet nový řádek a vynuluje se čítač znaků.

Syntaxe:


        SF_String.ExpandTabs(InputStr As String[, TabSize As Integer]) As String
      

Parametry:

InputStr: Vstupní řetězec, který se má upravit.

TabSize: Tento parametr odpovídající kroku tabulátoru se použije pro určení umístění textu, a to podle vzorců: TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (výchozí = 8)

Příklad:


        Dim myText as String
        myText = "100" & SF_String.sfTAB & "200" & SF_String.sfTAB & "300" & SF_String.sfNEWLINE & _
                 "X"  & SF_String.sfTAB & "Y" & SF_String.sfTAB & "Z"
        MsgBox SF_String.ExpandTabs(myText)
        '100     200     300
        'X       Y       Z
      

FilterNotPrintable

Nahradí všechny netisknutelné znaky vstupního řetězce zadaným znakem.

Syntaxe:


        SF_String.FilterNotPrintable(InputStr As String[, ReplacedBy As String]) As String
      

Parametry:

InputStr: Řetězec, který se má prohledat.

ReplacedBy: Žádný, jeden či více znaků, které nahradí každý netisknutelný znak v řetězci InputStr (výchozí = "").

Příklad:


        Dim LF : LF = Chr(10)
        Dim myText as String
        myText = "àén ΣlPµ" & LF & " Русский" & "\n"
        MsgBox SF_String.FilterNotPrintable(myText)
        ' "àén ΣlPµ Русский\n"
      

FindRegex

Najde v řetězci podřetězec odpovídající zadanému regulárnímu výrazu.

Syntaxe:


        SF_String.FindRegex(InputStr As String, Regex As String[, Start As Long[, CaseSensitive As Boolean[, Forward As Boolean]]]) As String
      

Parametry:

InputStr: Řetězec, který se má prohledat.

Regex: Regulární výraz.

Start: Pozice v řetězci, od níž vyhledávání začne. Tento parametr se předává odkazem, po provedení metody tedy bude hodnota Start odkazovat na první znak nalezeného řetězce. Nebude-li nalezen žádný, hodnota Start bude 0.

CaseSensitive: Výchozí = False.

Forward: Určuje směr vyhledávání. V případě True vyhledávání postupuje směrem dopředu, v opačném případě směrem zpět (výchozí = True).

Po první iteraci vyhledávání by měla být v případě Forward = True hodnota Start rovna 1, zatímco v případě Forward = False by se tato hodnota měla rovnat Len(InputStr).

Příklad:


        Dim lStart As Long : lStart = 1
        Dim result as String
        result = SF_String.FindRegex("abCcdefghHij", "C.*H", lStart, CaseSensitive := True)
        MsgBox lStart & ": " & result
        '3: CcdefghH
      
tip

Ve výše uvedeném příkladu je možné využít novou hodnotu lStart k tomu, aby vyhledávání pokračovalo. K tomu je nutné natavit pro další iteraci parametr start na hodnotu lStart + Len(result).


HashStr

Hashovací funkce se používají u některých kryptografických algoritmů, elektronických podpisů, autentizačních kódů, detekování podvodů, otisků (fingerprints), kontrolních součtů (kontrolách integrity zpráv), hashovacích tabulek, ukládání hesel apod.

Metoda HashStr vrátí výsledek hashovací funkce použité s daným algoritmem na zadaný řetězec. Návratovou hodnotou je řetězec složený z malých šestnáctkových číslic.

Podporovanými hashovacími algoritmy jsou: MD5, SHA1, SHA224, SHA256, SHA384 a SHA512.

Syntaxe:


          SF_String.HashStr(InputStr As String, Algorithm As String) As String
      

Parametry:

InputStr: Řetězec, který má být zahashován. Předpokládá se, že je v kódování UTF-8. V hashovacím algoritmu bude řetězec považován za posloupnost bajtů.

Algorithm: Některý z výše uvedených podporovaných algoritmů, zadaný jako řetězec.

Příklad:


          MsgBox SF_String.HashStr("œ∑¡™£¢∞§¶•ªº–≠œ∑´®†¥¨ˆøπ‘åß∂ƒ©˙∆˚¬", "MD5")
          ' c740ccc2e201df4b2e2b4aa086f35d8a
      

HtmlEncode

Zakóduje vstupní řetězec na HTML kódy znaků tím, že nahradí speciální znaky jim odpovídajícími řetězci, které začínají znakem &.

Například znak é bude nahrazen řetězcem &eacute; nebo odpovídajícím číselným HTML kódem.

Syntaxe:


        SF_String.HtmlEncode(InputStr) As String
      

Parametry:

InputStr: Řetězec, který se má zakódovat.

Příklad:


        MsgBox SF_String.HtmlEncode("<a href=""https://a.b.com"">From α to ω</a>")
        ' "&lt;a href=&quot;https://a.b.com&quot;&gt;From &#945; to &#969;&lt;/a&gt;"
      

IsADate

Vrátí True, pokud vstupní řetězec představuje pro určený formát platné datum.

Syntaxe:


        SF_String.IsADate(InputStr As String[, DateFormat As String]) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

DateFormat: Formát data jako řetězec. Je možné zvolit "YYYY-MM-DD" (výchozí), "DD-MM-YYYY" nebo "MM-DD-YYYY".

Spojovník (-) lze nahradit tečkou (.), lomítkem (/) nebo mezerou.

V případě neplatného formátu metoda vrátí False.

Příklad:


        MsgBox SF_String.IsADate("2020-12-31", "YYYY-MM-DD") ' True
      
note

Tato metoda kontroluje pouze formát vstupního řetězce, nekontroluje, zda odpovídá datu kalendáře. Neověřuje tedy vstupní řetězec vzhledem k přestupným rokům či tomu, zda má měsíc 30 nebo 31 dní. Pro takovou kontrolu je určena vestavěná funkce IsDate.


Níže uvedený příklad ukazuje rozdíl mezi metodou IsADate (ScriptForge) a funkcí IsDate (vestavěná).


    Dim myDate as String : myDate = "2020-02-30"
    MsgBox SF_String.IsADate(myDate, "YYYY-MM-DD") 'True
    MsgBox IsDate(myDate) 'False
  

IsAlpha

Vrátí True, jsou-li všechny znaky řetězce písmeny abecedy.

Znaky abecedy jsou ty znaky, které jsou v databázi znaků Unicode (Unicode Character Database) definovány jako Letter.

Syntaxe:


        SF_String.IsAlpha(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsAlpha("àénΣlPµ") 'True
        MsgBox SF_String.IsAlpha("myVar3") 'False
      

IsAlphaNum

Vrátí True, jestliže jsou všechny znaky řetězce písmena abeceda, číslice nebo "_" (podtržítka). První znak nesmí být číslice.

Syntaxe:


        SF_String.IsAlphaNum(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsAlphaNum("_ABC_123456_abcàénΣlPµ") 'True
        MsgBox SF_String.IsAlphaNum("123ABC") 'False
      

IsAscii

Vrátí True, jsou-li všechny znaky řetězce znaky ASCII.

Syntaxe:


        SF_String.IsAscii(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsAscii("a%?,25") 'True
        MsgBox SF_String.IsAscii("abcàénΣlPµ") 'False
      

IsDigit

Vrátí True, jsou-li všechny znaky řetězce číslicemi.

Syntaxe:


        SF_String.IsDigit(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsDigit("123456") 'True
        MsgBox SF_String.IsDigit("_12a") 'False
      

IsEmail

Vrátí True, jestliže řetězec představuje platnou e-mailovou adresu.

Syntaxe:


        SF_String.IsEmail(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsEmail("first.last@something.org") 'True
        MsgBox SF_String.IsEmail("first.last@something.com.br") 'True
        MsgBox SF_String.IsEmail("first.last@something.123") 'False
      

IsFileName

Vrátí True, jestliže řetězec představuje v zadaném operačním systému platný název souboru.

Syntaxe:


        SF_String.IsFileName(InputStr As String[, OSName As String]) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

OSName: Název operačního systému jako řetězec. Může se jednat o hodnoty "WINDOWS", "LINUX", "MACOSX" a "SOLARIS".

Výchozí hodnotou je operační systém, na kterém je skript spuštěn.

Příklad:


        MsgBox SF_String.IsFileName("~/Documents/a file name.odt", "LINUX") 'True
        MsgBox SF_String.IsFileName("C:\home\a file name.odt", "LINUX") 'False
        MsgBox SF_String.IsFileName("C:\home\a file name.odt", "WINDOWS") 'True
      

IsHexDigit

Vrátí True, jsou-li všechny znaky řetězce šestnáctkovými číslicemi.

Syntaxe:


        SF_String.IsHexDigit(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Šestnáctkové číslice mohou být uvozeny znaky "0x" nebo "&H".

Příklad:


        MsgBox SF_String.IsHexDigit("&H00FF") 'True
        MsgBox SF_String.IsHexDigit("08AAFF10") 'True
        MsgBox SF_String.IsHexDigit("0x18LA22") 'False
      

IsIBAN

Vrátí True, jestliže řetězec představuje platné Mezinárodní číslo bankovního účtu (International Bank Account Number, IBAN). Při porovnávání se nerozlišuje velikost písmen.

note

Tato metoda je k dispozici od verze LibreOffice 7.2.


Syntaxe:


        SF_String.IsIBAN(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Návratová hodnota:

True, pokud řetězec obsahuje platné číslo IBAN.

Příklad:


        MsgBox SF_String.IsIBAN("BR15 0000 0000 0000 1093 2840 814 P2") 'returns True
      

IsIPv4

Vrátí True, jestliže řetězec představuje platnou IP adresu (v4).

Syntaxe:


        SF_String.IsIPv4(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsIPv4("192.168.1.50") 'True
        MsgBox SF_String.IsIPv4("192.168.50") 'False
        MsgBox SF_String.IsIPv4("255.255.255.256") 'False
      

IsLike

Vrátí True, jestliže celý vstupní řetězec odpovídá zadanému vzorku obsahujícímu zástupné znaky.

Syntaxe:


        SF_String.IsLike(InputStr As String, Pattern As String[, CaseSensitive As Boolean) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Pattern: Vzorek jako řetězec. Zástupnými znaky jsou:

CaseSensitive: Výchozí = False.

Příklad:


        MsgBox SF_String.IsLike("aAbB", "?A*") 'True
        MsgBox SF_String.IsLike("C:\a\b\c\f.odb", "?:*.*") 'True
        MsgBox SF_String.IsLike("name:host", "?*@?*") 'False
        MsgBox SF_String.IsLike("@host", "?*@?*") 'False
      

IsLower

Vrátí True, jsou-li všechny znaky vstupního řetězce malými písmeny. Znaky, které nejsou písmeny abecedy, se ignorují.

Syntaxe:


        SF_String.IsLower(InputStr As String) As Boolean
      

Parametry:

inputstr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsLower("abc'(-xy4z") 'True
        MsgBox SF_String.IsLower("1234") ' True
        MsgBox SF_String.IsLower("abcDefg") 'False
      

IsPrintable

Vrátí True, jsou-li všechny znaky řetězce tisknutelné.

Syntaxe:


        SF_String.IsPrintable(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsPrintable("àén ΣlPµ Русский") 'True
        MsgBox SF_String.IsPrintable("First line." & Chr(10) & "Second Line.") 'False
      

IsRegex

Vrátí True, jestliže celý vstupní řetězec odpovídá zadanému regulárnímu výrazu.

Syntaxe:


        SF_String.IsRegex(InputStr As String, Regex As String[, CaseSensitive As Boolean) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Regex: Regulární výraz. Je-li prázdný, metoda vrátí False.

CaseSensitive: Výchozí = False.

Příklad:


        MsgBox SF_String.IsRegex("aAbB", "[A-Za-z]+") ' True
        MsgBox SF_String.IsRegex("John;100", "[A-Za-z]+;[0-9]+") 'True
        MsgBox SF_String.IsRegex("John;100;150", "[A-Za-z]+;[0-9]+") 'False
      

IsSheetName

Vrátí True, jestliže vstupní řetězec představuje platný název listu Calcu.

Syntaxe:


          SF_String.IsSheetName(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


          MsgBox SF_String.IsSheetName("1àbc + ""déf""") 'True
          MsgBox SF_String.IsSheetName("[MySheet]") 'False
      
note

Název listu nemůže obsahovat znaky [ ] * ? : / \ nebo znak ' (apostrof) na první nebo poslední pozici.


IsTitle

Vrátí True, je-li první znak každého slova velké písmeno a ostatní znaky jsou malá písmena.

Syntaxe:


        SF_String.IsTitle(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsTitle("This Is The Title Of My Book") 'True
        MsgBox SF_String.IsTitle("This is the Title of my Book") 'False
        MsgBox SF_String.IsTitle("Result Number 100") 'True
      

IsUpper

Vrátí True, jsou-li všechny znaky vstupního řetězce velkými písmeny. Znaky, které nejsou písmeny abecedy, se ignorují.

Syntaxe:


        SF_String.IsUpper(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsUpper("ABC'(-XYZ") 'True
        MsgBox SF_String.IsUpper("A Title") 'False
      

IsUrl

Vrátí True, je-li řetězec platnou absolutní adresou URL (Uniform Resource Locator). Podporovány jsou pouze protokoly http, https a ftp.

Syntaxe:


        SF_String.IsUrl(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsUrl("http://foo.bar/?q=Test%20URL-encoded%20stuff") 'True
        MsgBox SF_String.IsUrl("www.somesite.org") 'False
      

IsWhitespace

Vrátí True, jsou-li všechny znaky řetězce prázdnými znaky.

Syntaxe:


        SF_String.IsWhitespace(InputStr As String) As Boolean
      

Parametry:

InputStr: Řetězec, který se má zkontrolovat. Je-li prázdný, metoda vrátí False.

Příklad:


        MsgBox SF_String.IsWhitespace("    ") 'True
        MsgBox SF_String.IsWhitespace(" " & Chr(9) & Chr(10)) 'True
        MsgBox SF_String.IsWhitespace("") 'False
      

JustifyCenter

Vrátí vstupní řetězec zarovnaný na střed.

Z řetězce se odstraní úvodní a koncové prázdné znaky a ke zbylým znakům se doleva a doprava doplní znaky Padding tak, aby měl řetězec celkovou délku Length.

Syntaxe:


        SF_String.JustifyCenter(InputStr As String[, Length As Long[, Padding As String]]) As String
      

Parametry:

InputStr: Řetězec, který se má zarovnat na střed. Je-li prázdný, metoda vrátí prázdný řetězec.

Length: Délka výsledného řetězce (výchozí = délka vstupního řetězce).

Pokud je zadaná délka menší než na střed zarovnaný vstupní řetězec, vrácený řetězec bude oříznut.

Padding: Jediný znak použitý pro doplnění (výchozí = znak mezery ASCII " ").

Příklad:


        MsgBox SF_String.JustifyCenter("Title", Length := 11) ' "   Title   "
        MsgBox SF_String.JustifyCenter("    ABCDE", Padding := "_") ' "__ABCDEF__"
        MsgBox SF_String.JustifyCenter("A Long Title", Length := 5) ' "ong T"
      

JustifyLeft

Vrátí vstupní řetězec zarovnaný vlevo.

Z řetězce se odstraní úvodní a koncové prázdné znaky a ke zbylým znakům se doprava doplní znaky Padding tak, aby měl řetězec celkovou délku Length.

Syntaxe:


        SF_String.JustifyLeft(InputStr As String[, Length As Long[, Padding As String]]) As String
      

Parametry:

InputStr: Řetězec, který se má zarovnat vlevo. Je-li prázdný, metoda vrátí prázdný řetězec.

Length: Délka výsledného řetězce (výchozí = délka vstupního řetězce).

Pokud je zadaná délka menší než vlevo zarovnaný vstupní řetězec, vrácený řetězec bude oříznut.

Padding: Jediný znak použitý pro doplnění (výchozí = znak mezery ASCII " ").

Příklad:


        MsgBox SF_String.JustifyLeft("Title", Length := 10) ' "Title     "
        MsgBox SF_String.JustifyLeft("    ABCDE", Padding := "_") ' "ABCDEF____"
        MsgBox SF_String.JustifyLeft("A Long Title", Length := 5) ' "A Lon"
      

JustifyRight

Vrátí vstupní řetězec zarovnaný vpravo.

Z řetězce se odstraní úvodní a koncové prázdné znaky a ke zbylým znakům se doleva doplní znaky Padding tak, aby měl řetězec celkovou délku Length.

Syntaxe:


        SF_String.JustifyRight(InputStr As String[, Length As Long[, Padding As String]]) As String
      

Parametry:

InputStr: Řetězec, který se má zarovnat vpravo. Je-li prázdný, metoda vrátí prázdný řetězec.

Length: Délka výsledného řetězce (výchozí = délka vstupního řetězce).

Pokud je zadaná délka menší než vpravo zarovnaný vstupní řetězec, vrácený řetězec bude oříznut.

Padding: Jediný znak použitý pro doplnění (výchozí = znak mezery ASCII " ").

Příklad:


        MsgBox SF_String.JustifyRight("Title", Length := 10) ' "     Title"
        MsgBox SF_String.JustifyRight("  ABCDE  ", Padding := "_") ' "____ABCDEF"
        MsgBox SF_String.JustifyRight("A Long Title", Length := 5) ' "Title"
      

Quote

Vrátí vstupní řetězec uzavřený do jednoduchých či dvojitých uvozovek. Existující uvozovky nejsou dotčeny, a to včetně úvodních a koncových uvozovek.

Syntaxe:


        SF_String.Quote(InputStr As String, [QuoteChar As String]) As String
      

Parametry:

InputStr: Řetězec, který se má uzavřít do uvozovek.

QuoteChar: Jednoduchá ('), nebo dvojitá (") uvozovka.

Příklad:


        MsgBox SF_String.Quote("Text Value")
        ' "Text Value"
        MsgBox SF_String.Quote("Book Title: ""The Arabian Nights""", "'")
        ' 'Book Title: "The Arabian Nights"'
      
tip

Tato metoda může být užitečná při přípravě pole řetězců pro uložení do souboru typu CSV, který vyžaduje, aby textové hodnoty byly uzavřeny v jednoduchých nebo dvojitých uvozovkách.


ReplaceChar

Nahradí všechny výskyty znaků uvedených v parametru before odpovídajícími znaky z parametru after.

Jestliže je řetězec before delší než after, zbývající znaky z before se nahradí posledním znakem z after.

Syntaxe:


        SF_String.ReplaceChar(InputStr As String, Before As String, After As String) As String
      

Parametry:

InputStr: Vstupní řetězec, ve kterém se má nahrazení provést.

Before: Řetězec se znaky, které budou ve vstupním řetězci vyhledány a nahrazeny.

After: Řetězec s novými znaky, které nahradí ty, které jsou uvedeny v řetězci before.

Příklad:


        ' Nahradí znaky s diakritikou
        MsgBox SF_String.ReplaceChar("Protégez votre vie privée", "àâãçèéêëîïôöûüýÿ", "aaaceeeeiioouuyy")
        ' "Protegez votre vie privee"
        MsgBox SF_String.ReplaceChar("Protégez votre vie privée", "àâãçèéêëîïôöûüýÿ", "")
        ' "Protgez votre vie prive"
        MsgBox SF_String.ReplaceChar("àâãçèéêëîïôöûüýÿ", "àâãçèéêëîïôöûüýÿ", "aaaceeeeiioouuyy")
        ' "aaaceeeeiioouuyy"
    

Služba SF_String poskytuje přístup k užitečným konstantám pro skupiny znaků latinky, jak je ukázáno v příkladu níže:


        MsgBox SF_String.ReplaceChar("Protégez votre vie privée", SF_String.CHARSWITHACCENT, SF_String.CHARSWITHOUTACCENT)
        ' "Protegez votre vie privee"
      

ReplaceRegex

Nahradí všechny výskyty zadaného regulárního výrazu novým řetězcem.

Syntaxe:


        SF_String.ReplaceRegex(InputStr As String, Regex As String, NewStr As String[, CaseSensitive As Boolean]) As String
      

Parametry:

InputStr: Vstupní řetězec, ve kterém se má nahrazení provést.

Regex: Regulární výraz.

NewStr: Nahrazující řetězec.

CaseSensitive: Výchozí = False.

Příklad:


          MsgBox SF_String.ReplaceRegex("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "[a-z]", "x", CaseSensitive := True)
          ' "Lxxxx xxxxx xxxxx xxx xxxx, xxxxxxxxxxx xxxxxxxxxx xxxx." (každé malé písmeno je nahrazeno znakem "x")
          MsgBox SF_String.ReplaceRegex("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "\b[a-z]+\b", "x", CaseSensitive := False)
          ' "x x x x x, x x x." (každé slovo je nahrazeno znakem "x")
      

ReplaceStr

Nahradí v řetězci některé nebo všechny výskyty prvků z pole řetězců prvky z jiného pole řetězců.

Syntaxe:


        SF_String.ReplaceStr(InputStr As String, OldStr As Variant, NewStr As Variant[, Occurrences As Long[, CaseSensitive As Boolean]]) As String
      

Parametry:

InputStr: Vstupní řetězec, ve kterém se má nahrazení provést.

OldStr: Jediný řetězec nebo pole řetězců. Řetězce s nulovou délkou se ignorují.

NewStr: Nahrazující řetězec nebo pole nahrazujících řetězců.

Je-li argument OldStr pole, každý výskyt jakékoliv jeho položky se nahradí argumentem NewStr.

Je-li OldStr i NewStr pole, nahrazovat se budou odpovídající položky až do indexu UBound(NewStr).

Pokud má OldStr více položek než NewStr, přebývající prvky v OldStr budou nahrazeny posledním prvkem NewStr.

Occurrences: Maximální počet nahrazení. Výchozí hodnotou je 0, což znamená, že se nahradí všechny výskyty.

Je-li parametr OldStr pole, parametr Occurrence se uplatní zvlášť pro každou položku tohoto pole.

CaseSensitive: Výchozí = False.

Příklad:


        MsgBox SF_String.ReplaceStr("100 xxx 200 yyy", Array("xxx", "yyy"), Array("(1)", "(2)"), CaseSensitive := False)
        ' "100 (1) 200 (2)"
        MsgBox SF_String.ReplaceStr("abCcdefghHij", Array("c", "h"), Array("Y", "Z"), CaseSensitive := False)
        ' "abYYdefgZZij"
      

Represent

Vrátí řetězec s čitelnou reprezentací argumentu oříznutou na zadanou délku. Ta je využitelná zejména pro účely ladění a záznamu.

Pokud je parametr AnyValue objekt, bude uzavřen do hranatých závorek "[" a "]".

Tabulátory a zalomení řádku jsou v řetězcích nahrazeny sekvencemi \t a \n či \r.

Jestliže je délka výsledného řetězce větší než parametr MaxLength, přesahující část řetězce se nahradí řetězcem " ... (N)", kde N je celková délka původního řetězce před zkrácením.

Syntaxe:


        SF_String.Represent(AnyValue As Variant[, MaxLength As Long]) As String
      

Parametry:

AnyValue: Vstupní hodnota, jejíž reprezentace se má připravit. Může se jednat o libovolnou hodnotu, například řetězec, pole, objekt Basicu, objekt UNO atd.

MaxLength: Maximální délka výsledného řetězce. Výchozí hodnotou je 0, což znamená, že délka výsledné reprezentace není nijak omezena.

Příklad:


        MsgBox SF_String.Represent("this is a usual string") ' "this is a usual string"
        MsgBox SF_String.Represent("this is a usual string", 15) ' "this i ... (22)"
        MsgBox SF_String.Represent("this is a" & Chr(10) & " 2-lines string") ' "this is a\n 2-lines string"
        MsgBox SF_String.Represent(Empty) ' "[EMPTY]"
        MsgBox SF_String.Represent(Null) ' "[NULL]"
        MsgBox SF_String.Represent(Pi) ' "3.142"
        MsgBox SF_String.Represent(CreateUnoService("com.sun.star.util.PathSettings")) ' "[com.sun.star.comp.framework.PathSettings]"
      

Reprezentace datových typů jako pole či objekt ScriptForge.Dictionary obsahují jak datový typ, tak hodnoty:


    ' Příklad s vestavěným polem Basicu
    MsgBox SF_String.Represent(Array(1, 2, "Text" & Chr(9) & "here"))
    ' "[ARRAY] (0:2) (1, 2, Text\there)"
    ' Příklad s polem knihovny ScriptForge
    Dim aValues as Variant
    aValues = SF_Array.RangeInit(1, 5)
    MsgBox SF_String.Represent(aValues)
    ' "[ARRAY] (0:4) (1.0, 2.0, 3.0, 4.0, 5.0)"
    ' Příklad s objektem Dictionary knihovny ScriptForge
    Dim myDict As Variant : myDict = CreateScriptService("Dictionary")
    myDict.Add("A", 1) : myDict.Add("B", 2)
    MsgBox SF_String.Represent(myDict)
    ' "[Dictionary] ("A":1, "B":2)"
  

Reverse

Vrátí vstupní řetězec v obráceném pořadí.

Tato metoda odpovídá vestavěné funkci Basicu StrReverse, je však rychlejší.

note

Pro použití funkce StrReverse je nutné, aby se v modulu nacházel příkaz Option VBASupport 1.


Syntaxe:


        SF_String.Reverse(InputStr As String) As String
      

Parametry:

InputStr: Řetězec, který se má obrátit.

Příklad:


        MsgBox SF_String.Reverse("abcdefghij") ' "jihgfedcba"
      

SplitLines

Vrátí pole řetězců začínající od 0 s řádky vstupního řetězce. Položky pole jsou získány rozdělením vstupního řetězce v místech se znaky konce řádku.

Syntaxe:


        SF_String.SplitLines(InputStr As String[, KeepBreaks As Long]) As Variant
      

Parametry:

InputStr: Řetězec, který se má rozdělit.

KeepBreaks: Je-li True, ve výstupním poli se zachovají konce řádků (výchozí = False).

Příklad:


        Dim a as Variant
        a = SF_String.SplitLines("Line1" & Chr(10) & "Line2" & Chr(13) & "Line3")
        ' a = Array("Line1", "Line2", "Line3")
        a = SF_String.SplitLines("Line1" & Chr(10) & "Line2" & Chr(13) & "Line3" & Chr(10))
        ' a = Array("Line1", "Line2", "Line3", "")
        a = SF_String.SplitLines("Line1" & Chr(10) & "Line2" & Chr(13) & "Line3" & Chr(10), KeepBreaks := True)
        ' a = Array("Line1\n", "Line2\r", "Line3\n", "")
      

SplitNotQuoted

Rozdělí řetězec na pole prvků pomocí zadaného oddělovače.

Pokud se oddělovač nachází v podřetězci v uvozovkách, ignoruje se. To je užitečné při zpracování záznamů ve tvaru jako v souboru CSV, které obsahují řetězce v uvozovkách.

Syntaxe:


        SF_String.SplitNotQuoted(InputStr As String[, Delimiter As String], [Occurrences As Long], [QuoteChar As String]) As Variant
      

Parametry:

InputStr: Řetězec, který se má rozdělit.

Delimiter: Řetězec jednoho či více znaků, které se použijí jako oddělovač. Výchozím oddělovačem je znak mezery.

Occurrences: Maximální počet vrácených podřetězců. Výchozí hodnotou je 0, což znamená, že počet vrácených řetězců není omezen.

QuoteChar: Jednoduchá ('), nebo dvojitá (") uvozovka.

Příklad:


        a = SF_String.SplitNotQuoted("abc def ghi")
        ' a = Array("abc", "def", "ghi")
        a = SF_String.SplitNotQuoted("abc,""def,ghi""", ",")
        ' a = Array("abc", """def,ghi""")
        a = SF_String.SplitNotQuoted("abc,""def\"",ghi""", ",")
         ' a = Array("abc", """def\"",ghi""")
        a = SF_String.SplitNotQuoted("abc,""def\"",ghi"""",", ",")
        ' a = Array("abc", """def\"",ghi""", "")
      

StartsWith

Vrátí True, pokud se první znaky řetězce shodují se zadaným podřetězcem.

Metoda vrátí False, má-li řetězec nebo podřetězec délku 0 nebo je-li podřetězec delší než vstupní řetězec.

Syntaxe:


        SF_String.StartsWith(InputStr As String, Substring As String[, CaseSensitive As Boolean]) As Boolean
      

Parametry:

InputStr: Řetězec, který se má ověřit.

Substring: Podřetězec, který se má vyhledat na začátku řetězce InputStr.

CaseSensitive: Výchozí = False.

Příklad:


        MsgBox SF_String.StartsWith("abcdefg", "ABC") 'True
        MsgBox SF_String.StartsWith("abcdefg", "ABC", CaseSensitive := True) 'False
      

TrimExt

Vrátí vstupní řetězec bez úvodních a koncových prázdných znaků.

Syntaxe:


        SF_String.TrimExt(InputStr As String) As String
      

Parametry:

InputStr: Řetězec, který se má oříznout.

Příklad:


        MsgBox SF_String.TrimExt(" Some text.  ") ' "Some text."
        MsgBox SF_String.TrimExt("   ABCDE" & Chr(9) & Chr(10) & Chr(13) & " ") ' "ABCDEF"
      

Unescape

Převede escape sekvence (\\, \n, \r, \t) ve vstupním řetězci na jim odpovídající znaky ASCII.

Syntaxe:


        SF_String.Unescape(InputStr As String) As String
      

Parametry:

InputStr: Řetězec, který se má převést.

Příklad:


        MsgBox SF_String.Unescape("abc\n\tdef\\n")
        ' "abc" & Chr(10) & Chr(9) & "def\n"
      

Unquote

Odstraní jednoduché nebo dvojité uvozovky uzavírající vstupní řetězec.

To je užitečné při zpracování záznamů ve tvaru jako v souboru CSV, které obsahují řetězce v uvozovkách.

Syntaxe:


        SF_String.Unquote(InputStr As String, [QuoteChar As String]) As String
      

Parametry:

InputStr: Řetězec, ze kterého se mají uvozovky odstranit.

QuoteChar: Jednoduchá ('), nebo dvojitá (") uvozovka (výchozí).

Příklad:


        Dim s as String
        s = SF_String.Unquote("""Some text""") ' s = "Some text" (bez uzavírajících uvozovek)
        ' The string below does not have enclosing quotes, so it remains unchanged
        s = SF_String.Unquote("Some text") ' s = "Some text" (nezměněno)
        ' Uvozovky uvnitř řetězce se neodstraní
        s = SF_String.Unquote("The ""true"" meaning") ' s = "The ""true"" meaning"
      

Wrap

Převede vstupní řetězec na pole podřetězců takovým způsobem, aby měla každá položka pole nejvýše zadaný počet znaků.

Metoda vrátí pole výstupních řádků začínající od 0, a to bez znaků nových řádků na konci (s výjimkou zalomení řádku, které v řetězci již existují).

Tabulátory jsou nahrazeny mezerami stejně jako při použití metody ExpandTabs.

Symbolická zalomení řádku jsou nahrazena odpovídajícími znaky ASCII.

Jestliže nemá připravený výstup žádný obsah, vrátí se prázdné pole.

Syntaxe:


          SF_String.Wrap(InputStr As String, [Width As Long], [TabSize As Integer]) As String
      

Parametry:

InputStr: Řetězec, který se má zpracovat.

Width: Maximální počet znaků každého řádku (výchozí = 70).

TabSize: Před rozdělením textu se stávající znaky tabulátoru Chr(9) nahradí mezerami. Argument TabSize určuje krok tabulátoru, text bude umístěn na pozicích TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (výchozí = 8).

Příklad:


          a = "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."
          b = SF_String.Wrap(a, 20)
          ' Array("Neque porro ", "quisquam est qui ", "dolorem ipsum quia ", "dolor sit amet, ", "consectetur, ", "adipisci velit...")
        
warning

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu.