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í:

V Basicu

      GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
  

Načtení knihovny vytvoří objekt SF_String, který lze používat pro volání metod služby String.

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


    Dim s as String : s = "abc def"
    s = SF_String.Capitalize(s) ' Abc Def
  

    Dim s as String : s = "abc def"
    Dim svc : svc = SF_String
    s = svc.Capitalize(s) ' Abc Def
  

    Dim s as String : s = "abc def"
    Dim svc : svc = CreateScriptService("String")
    s = svc.Capitalize(s) ' Abc Def
  
V Pythonu

Níže uvedená část kódu ukazuje, jak volat metody služby String ze skriptů Pythonu. Jako příklad je použita metoda IsIPv4.


    from scriptforge import CreateScriptService
    svc = CreateScriptService("String")
    ip_address = '192.168.0.14'
    svc.IsIPv4(ip_address) # True
  

Vlastnosti

Objekt SF_String poskytuje skriptům Basicu 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.


Seznam metod služby String

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.


warning

Protože v Pythonu je již obsáhlá podpora pro řetězce vestavěná, většina metod služby String je k dispozici pouze pro skripty Basicu. Metodami dostupnými v Basicu i Pythonu jsou: HashStr, IsADate, IsEmail, IsFileName, IsIBAN, IsIPv4, IsLike, IsSheetName, IsUrl, SplitNotQuoted a Wrap.


Capitalize

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

Syntaxe:

svc.Capitalize(inputstr: str): str

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:

svc.Count(inputstr: str, substring: str, [isregex: bool], [casesensitive: bool]): int

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: Zda se u vyhledávání rozlišuje velikost písmen (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:

svc.EndsWith(inputstr: str, substring: str, [casesensitive: bool]): bool

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:

svc.Escape(inputstr: str): str

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:

svc.ExpandTabs(inputstr: str, [tabsize: int]): str

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:

svc.FilterNotPrintable(inputstr: str, [replacedby: str]): str

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:

svc.FindRegex(inputstr: str, regex: str, [start: int], [casesensitive: bool], [forward: bool]): str

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: Zda se u vyhledávání rozlišuje velikost písmen (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:

svc.HashStr(inputstr: str, algorithm: str): str

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:

V Basicu

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

    svc = CreateScriptService("String")
    bas = CreateScriptService("Basic")
    a_string = "œ∑¡™£¢∞§¶•ªº–≠œ∑´®†¥¨ˆøπ‘åß∂ƒ©˙∆˚¬"
    hash_value = svc.HashStr(a_string, "MD5")
    bas.MsgBox(hash_value)
    # 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 é nebo odpovídajícím číselným HTML kódem.

Syntaxe:

svc.HtmlEncode(inputstr: str): str

Parametry:

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

Příklad:


    MsgBox SF_String.HtmlEncode("From α to ω")
    ' "<a href="https://a.b.com">From α to ω</a>"
  

IsADate

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

Syntaxe:

svc.IsADate(inputstr: str, [dateformat: str]): bool

Parametry:

inputstr: Řetězec, který se má ověřit. 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:

V Basicu

    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
  
V Pythonu

    svc = CreateScriptService("String")
    s_date = "2020-12-31"
    result = svc.IsADate(s_date) # True
  

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:

svc.IsAlpha(inputstr: str): bool

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:

svc.IsAlphaNum(inputstr: str): bool

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:

svc.IsAscii(inputstr: str): bool

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:

svc.IsDigit(inputstr: str): bool

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:

svc.IsEmail(inputstr: str): bool

Parametry:

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

Příklad:

V Basicu

    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
  
V Pythonu

    svc = CreateScriptService("String")
    bas = CreateScriptService("Basic")
    bas.MsgBox(svc.IsEmail("first.last@something.org")) # True
    bas.MsgBox(svc.IsEmail("first.last@something.com.br")) # True
    bas.MsgBox(svc.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:

svc.IsFileName(inputstr: str, [osname: str]): bool

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:

V Basicu

    MsgBox SF_String.IsFileName("/home/user/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
  
V Pythonu

    svc = CreateScriptService("String")
    bas = CreateScriptService("Basic")
    bas.MsgBox(svc.IsFileName("/home/user/Documents/a file name.odt", "LINUX")) # True
    bas.MsgBox(svc.IsFileName(r"C:\home\a file name.odt", "LINUX")) # False
    bas.MsgBox(svc.IsFileName(r"C:\home\a file name.odt", "WINDOWS")) # True
  

IsHexDigit

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

Syntaxe:

svc.IsHexDigit(inputstr: str): bool

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.

Syntaxe:

svc.IsIBAN(inputstr: str): bool

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:


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

    # Python
    result = svc.IsIBAN("BR15 0000 0000 0000 1093 2840 814 P2") # True
  

IsIPv4

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

Syntaxe:

svc.IsIPv4(inputstr: str): bool

Parametry:

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

Příklad:

V Basicu

    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
  
V Pythonu

    svc = CreateScriptService("String")
    bas = CreateScriptService("Basic")
    bas.MsgBox(svc.IsIPv4("192.168.1.50")) # True
    bas.MsgBox(svc.IsIPv4("192.168.50")) # False
    bas.MsgBox(svc.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:

svc.IsLike(inputstr: str, pattern: str, [casesensitive: bool]): bool

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: Zda se u vyhledávání rozlišuje velikost písmen (výchozí = False).

Příklad:

V Basicu

    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
  
V Pythonu

    svc = CreateScriptService("String")
    bas = CreateScriptService("Basic")
    bas.MsgBox(svc.IsLike("aAbB", "?A*")) # True
    bas.MsgBox(svc.IsLike(r"C:\a\b\c\f.odb", "?:*.*")) # True
    bas.MsgBox(svc.IsLike("name:host", "?*@?*")) # False
    bas.MsgBox(svc.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:

svc.IsLower(inputstr: str): bool

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:

svc.IsPrintable(inputstr: str): bool

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:

svc.IsRegex(inputstr: str, regex: str, [casesensitive: bool]): bool

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: Zda se u vyhledávání rozlišuje velikost písmen (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:

svc.IsSheetName(inputstr: str): bool

Parametry:

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

Příklad:

V Basicu

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

    svc = CreateScriptService("String")
    bas = CreateScriptService("Basic")
    bas.MsgBox(svc.IsSheetName("1àbc + ""déf""")) # True
    bas.MsgBox(svc.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:

svc.IsTitle(inputstr: str): bool

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:

svc.IsUpper(inputstr: str): bool

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:

svc.IsUrl(inputstr: str): bool

Parametry:

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

Příklad:

V Basicu

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

    svc = CreateScriptService("String")
    bas = CreateScriptService("Basic")
    bas.MsgBox(svc.IsUrl("http://foo.bar/?q=Test%20URL-encoded%20stuff")) # True
    bas.MsgBox(svc.IsUrl("www.somesite.org")) # False
  

IsWhitespace

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

Syntaxe:

svc.IsWhitespace(inputstr: str): bool

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:

svc.JustifyCenter(inputstr: str, [length: int], [padding: str]): str

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("    ABCDEF", 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:

svc.JustifyLeft(inputstr: str, [length: int], [padding: str]): str

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("    ABCDEF", 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:

svc.JustifyRight(inputstr: str, [length: int], [padding: str]): str

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("  ABCDEF  ", 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:

svc.Quote(inputstr: str, [quotechar: str]): str

Parametry:

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

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

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:

svc.ReplaceChar(inputstr: str, before: str, after: str): str

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:

svc.ReplaceRegex(inputstr: str, regex: str, newstr: str, [casesensitive: bool]): str

Parametry:

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

regex: Regulární výraz.

newstr: Nahrazující řetězec.

casesensitive: Zda se u vyhledávání rozlišuje velikost písmen (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:

svc.ReplaceStr(inputstr: str, oldstr: str, newstr: str, [occurrences: int], [casesensitive: bool]): str

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: Zda se u vyhledávání rozlišuje velikost písmen (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:

svc.Represent(anyvalue: any, [maxlength: int]): str

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.

note

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


Syntaxe:

svc.Reverse(inputstr: str): str

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:

svc.SplitLines(inputstr: str, [keepbreaks: int]): str[0..*]

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:

svc.SplitNotQuoted(inputstr: str, [delimiter: str], [occurrences: int], [quotechar: str]): str[0..*]

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 ASCII " ".

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:

V Basicu

    arr1 = SF_String.SplitNotQuoted("abc def ghi")
    ' arr1 = Array("abc", "def", "ghi")
    arr2 = SF_String.SplitNotQuoted("abc,""def,ghi""", ",")
    ' arr2 = Array("abc", """def,ghi""")
    arr3 = SF_String.SplitNotQuoted("abc,""def\"",ghi""", ",")
     ' arr3 = Array("abc", """def\"",ghi""")
    arr4 = SF_String.SplitNotQuoted("abc,""def\"",ghi"""",", ",")
    ' arr4 = Array("abc", """def\"",ghi""", "")
  
V Pythonu

    svc = CreateScriptService("String")
    arr1 = svc.SplitNotQuoted('abc def ghi')
    # arr1 = ('abc', 'def', 'ghi')
    arr2 = svc.SplitNotQuoted('abc,"def,ghi"', ",")
    # arr2 = ('abc', '"def,ghi"')
    arr3 = svc.SplitNotQuoted(r'abc,"def\",ghi"', ",")
    # arr3 = ('abc', '"def\\",ghi"')
    arr4 = svc.SplitNotQuoted(r'abc,"def\",ghi"",', ",")
    # arr4 = ('abc', '"def\\",ghi""', '')
  
note

Při reprezentaci řetězců mějte na paměti rozdíly mezi jazyky Basic a Python. V Basicu jsou například dva znaky "" uvnitř řetězce interpretovány jako jediný znak ". V Pythonu však mohou řetězce uzavřené v jednoduchých závorkách obsahovat znaky " bez nutnosti je zdvojovat.


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:

svc.StartsWith(inputstr: str, substring: str, [casesensitive: bool]): bool

Parametry:

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

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

casesensitive: Zda se u vyhledávání rozlišuje velikost písmen (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:

svc.TrimExt(inputstr: str): str

Parametry:

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

Příklad:


    MsgBox SF_String.TrimExt(" Some text.  ") ' "Some text."
    MsgBox SF_String.TrimExt("   ABCDEF" & 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:

svc.Unescape(inputstr: str): str

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:

svc.Unquote(inputstr: str, [quotechar: str]): str

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 = "Some text" (bez uzavírajících uvozovek)
    s = SF_String.Unquote("""Some text""")
    ' Řetězec níže uzavírající závorky nemá, proto se nezmění
    ' s = "Some text" (nezměněno)
    s = SF_String.Unquote("Some text")
    ' Uvozovky uvnitř řetězce se neodstraní
    ' s = "The ""true"" meaning" (nezměněno)
    s = SF_String.Unquote("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:

svc.Wrap(inputstr: str, [width: int], [tabsize: int]): str

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:

V Basicu

    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...")
  
V Pythonu

    a = "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."
    b = svc.Wrap(a, 20)
    # ('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 nebo skriptech Pythonu.


Podpořte nás!