Vsebina

# Storitev ScriptForge.String

Storitev String ponuja zbirko metod za obdelavo nizov. S temi metodami lahko:

- potrdite veljavnost vsebine niza;

- oblikujete nize z obrezovanjem, poravnavanjem ali oblivanjem njihove vsebine;

- uporabite regularne izraze za iskanje in zamenjevanje podnizov;

- izvedete algoritme zgoščevalne funkcije nad nizi itn.

## Definicije

### Prelomi vrstic

Storitev String prepozna naslednje prelome vrstic:

Simbolično ime | Število ASCII
--- | ---
Pomik v novo vrstico Navpični tabulator Pomik na začetek vrstice Pomik na začetek vrstice + pomik v novo vrstico Ločilo datotek Ločilo skupin Ločilo zapisov Naslednja vrstica Ločilo vrstic Ločilo odstavkov | 10 12 13 13 + 10 28 29 30 133 8232 8233

### Presledki

Storitev String prepozna naslednje prazne znake (angl. whitespace):

Simbolično ime | Število ASCII
--- | ---
Presledek Vodoravni tabulator Pomik v novo vrstico Navpični tabulator Pomik po obrazcu Prehod na začetek vrstice Naslednja vrstica Neprelomni presledek Ločilo vrstic Ločilo odstavkov | 32 9 10 11 12 13 133 160 8232 8233

### Ubežna zaporedja

Sledi seznam ubežnih zaporedij, ki jih lahko uporabite v nizih.

Ubežno zaporedje | Simbolično ime | Število ASCII
--- | --- | ---
\n \r \t | Pomik v novo vrsto Prehod na začetek vrstice Vodoravni tabulator | 10 13 9

Če želite, da se ubežni niz "\n" interpretira kot navaden niz, enostavno uporabite "\\n" namesto "\" & Chr(10).

### Nenatisljivi znaki:

Znaki, ki so v zbirki znakov Unicode Character Database določeni kot “Other” ali “Separator”, veljajo za nenatisljive znake.

Kontrolni znaki (koda ASCII <= 0x1F) prav tako veljajo za nenatisljive.

### Citati znotraj nizov:

Za uporabo narekovajev v nizih uporabite \' (enojni narekovaj) ali \" (dvojni narekovaj). Primer:

- Niz [n\'i\'z] tolmači kot [n'i'z]

- Niz [n\"i\"z] tolmači kot [n"i"z]

## Priklic storitve

Pred uporabo storitve ScriptForge.String je potrebno naložiti knjižnico ScriptForge na sledeč način:

##### V Basicu

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

Z nalaganjem knjižnice ustvarite predmet SF_String, ki ga lahko uporabite za klicanje metod v storitvi String.

Naslednji odlomki kode kažejo tri načine klica metod storitve String (metoda Capitalize služi kot primer):

        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

Spodnji odlomek kode ilustrira klicanje metod iz storitve String v skriptih Python. Metoda IsIPv4 služi kot primer.

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

## Lastnosti

Predmet SF_String zagotavlja naslednje lastnosti za skripte Basic:

Ime | Samo za branje | Opis
--- | --- | ---
sfCR | Da | Prehod na začetek vrstice (CF): Chr(13)
sfCRLF | Da | Prehod na začetek vrstice (CF) + pomik v novo vrstico (LF): Chr(13) & Chr(10)
sfLF | Da | Pomik v novo vrsto (LF): Chr(10)
sfNEWLINE | Da | Prehod na začetek vrstice + pomik v novo vrsto, ki je lahko: 1) Chr(13) & Chr(10) ali 2) zgolj pomik v novo vrsto – Chr(10), odvisno od operacijskega sistema.
sfTAB | Da | Vodoravni tabulator: Chr(9)

Zgornje lastnosti lahko uporabite za identifikacijo ali vstavljanje ustreznih znakov v nize. Primer: pomik v novo vrsto (LF) lahko zamenja SF_String.sfLF.

Seznam metod storitve Strings

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

Prvi argument večine metod je niz, ki bo obravnavan. Vedno je podan s sklicem in se ne spreminja. Metode, ko sta Capitalize in Escape, vrnejo po izvajanju novi niz.

Ker ima Python vgrajeno izčrpno podporo za nize, je večina metod storitve String na voljo le za skripte Basic. Metode, ki so na voljo za Basic in Python, so: HashStr, IsADate, IsEmail, IsFileName, IsIBAN, IsIPv4, IsLike, IsSheetName, IsUrl, SplitNotQuoted in Wrap.

## Capitalize

Prvi znak vsake besede v vhodnem nizu zamenja z njegovo veliko črko.

### Skladnja:

svc.Capitalize(inputstr: str): str

### Parametri:

inputstr: niz, katerega besede bodo dobile velike začetnice.

### Primer:

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

## Count

Prešteje število pojavitev podniza ali regularnega izraza v nizu.

### Skladnja:

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

### Parametri:

inputstr: vhodni niz, ki bo preučen.

substring: podniz regularnega izraza, ki bo uporabljen pri iskanju.

isregex: uporabite True, če je podniz regularni izraz (privzeto = False)

casesensitive: pri primerjanju lahko velja razlika med velikimi in malimi črkami ali ne (privzeta vrednost je False).

### Primer:

        'Prešteje pojavitve podniza "or" v vhodnem nizu (vrne 2)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "or", CaseSensitive := False)
        'Prešteje besede z zgolj malimi črkami (vrne 7)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "\b[a-z]+\b", IsRegex := True, CaseSensitive := True)

Če želite izvedeti več o regularnih izrazih, si oglejte dokumentacijo Python na spletni strani Regular Expression Operations (v angl.).

## EndsWith

Vrne True, če se niz konča z navedenim podnizom.

Funkcija vrne False, ko ima niz oz. podniz dolžino = 0 ali ko je podniz daljši od niza.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo preverjen.

substring: podniz, ki bo preiskan na koncu inputstr.

casesensitive: pri primerjanju lahko velja razlika med velikimi in malimi črkami ali ne (privzeta vrednost je False).

### Primer:

        'Vrne True, ker je metoda klicana s privzeto vrednostjo CaseSensitive = False
        MsgBox SF_String.EndsWith("abcdefg", "EFG")
        'Vrne False zaradi vrednosti parametra CaseSensitive
        MsgBox SF_String.EndsWith("abcdefg", "EFG", CaseSensitive := True)

## Escape

Pretvori prelome vrstic in tabulatorje v vhodnem nizu v njim ustrezna ubežna zaporedja (\\, \n, \r, \t).

### Skladnja:

svc.Escape(inputstr: str): str

### Parametri:

inputstr: niz, ki bo pretvorjen.

### Primer:

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

## ExpandTabs

Zamenja tabulatorske znake Chr(9) s presledki, da oponaša vedenje tabulatorskih mest.

Če najde prelom vrstice, se začne nova vrstica in števec znakov se ponastavi.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo razširjen.

tabsize: ta parameter se uporablja za določitev tabulatorskih mest z uporabo formule: TabSize + 1, 2 * TabSize + 1 ... N * TabSize + 1 (privzeto = 8)

### Primer:

        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

Zamenja vse nenatisljive znake v vhodnem nizu z danim znakom.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo preiskan.

replacedby: nič, eden ali več znakov, ki bodo zamenjali vse nenatisljive znake v inputstr (privzeto = "")

### Primer:

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

## FindRegex

V nizu najde podniz, ki se ujema s podanim regularnim izrazom.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo preiskan.

regex: regularni izraz.

start: položaj v nizu, kjer se bo začelo iskanje. Ta parameter je podan s sklicem, zato po izvajanju vrednost start kaže na prvi znak najdenega podniza. Če ni zadetka med podnizi, bo start nastavljen na 0.

casesensitive: pri primerjanju lahko velja razlika med velikimi in malimi črkami ali ne (privzeta vrednost je False).

forward: določa smer iskanja. Če je True, se iskanje pomakne naprej. Če je False, se iskanje pomakne nazaj (privzeta vrednost je True)

Če je forward = True, mora biti pri prvi iteraciji start enak 1, če pa je forward = False, potem mora biti start enak Len(inputstr)

### Primer:

        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

V zgornjem primeru lahko uporabite novo vrednost lStart za nadaljnje iskanje istega vhodnega niza, če pri naslednji iteraciji nastavite parameter Start na lStart + Len(result).

## HashStr

Zgoščevalne funkcije se uporabljajo v kriptografskih algoritmih, za digitalne podpise, overitvene kode sporočil, zaznavanje manipulacij, prstne odtise, kontrolne vsote (preverjanje integritete sporočil), tabele zgoščenih vrednosti, hrambo gesel in še mnogo drugega.

Metoda HashStr vrne rezultat zgoščevalne funkcije, izvedene na podanem nizu z uporabo navedenega algoritma, in sicer kot niz šestnajstiških števk, zapisan z malimi črkami.

Podprti algoritmi zgoščevalne funkcije so: MD5, SHA1, SHA224, SHA256, SHA384 in SHA512.

### Skladnja:

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

### Parametri:

inputstr: niz za zgoščevanje. Predvideva se, da je kodiran v UTF-8. Algoritem zgoščevalne funkcije obravnava niz kot tok bajtov.

algorithm: eden od podprtih algoritmov, navedenih zgoraj, podan kot niz.

### Primer:

##### 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

Kodira vhodni niz v znakovnih kodah HTML, pri čemer zamenja posebne znake z njihovimi nadomestnimi kodami &.

Primer: znak é bo zamenjan z &eacute; ali ekvivalentno številsko kodo HTML.

### Skladnja:

svc.HtmlEncode(inputstr: str): str

### Parametri:

inputstr: niz, ki bo kodiran.

### Primer:

        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

Vrne True, če je vhodni niz veljaven datum glede na navedeno obliko datuma.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazen, metoda vrne False.

dateformat: oblika datuma, podana kot niz. Možne vrednosti so "YYYY-MM-DD" (privzeto), "DD-MM-YYYY" in "MM-DD-YYYY"

Pomišljaj (-) lahko zamenjate s piko (.), poševnico (/) ali presledkom.

Če oblika ni veljavna, metoda vrne False.

### Primer:

##### V Basicu

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

Ta metoda preveri obliko vhodnega niza brez izvajanja specifičnih koledarskih preverjanj. Zato ne preveri vhodni niz glede prestopnih let ali mesecev s 30 ali 31 dnevi. Za te potrebe si oglejte vgrajeno funkcijo IsDate.

Spodnji primer prikazuje razliko med metodo IsADate (ScriptForge) in (vgrajeno) funkcijo IsDate.

        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

Vrne True, če so vsi znaki v nizu abecedni.

Abecedni znaki so znaki, določeni v zbirki znakov Unicode Character Database kot Letter.

### Skladnja:

svc.IsAlpha(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

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

## IsAlphaNum

Vrne True, če so vsi znaki v nizu abecedni, števke ali "_" (podčrtaji). Prvi znak ne sme biti števka.

### Skladnja:

svc.IsAlphaNum(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

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

## IsAscii

Vrne True, če so vsi znaki v nizu znaki ASCII.

### Skladnja:

svc.IsAscii(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

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

## IsDigit

Vrne True, če so vsi znaki v nizu števke.

### Skladnja:

svc.IsDigit(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

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

## IsEmail

Vrne True, če je niz veljaven e-poštni naslov.

### Skladnja:

svc.IsEmail(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

##### 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

Vrne True, če je niz veljavno ime datoteke v danem operacijskem sistemu.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

osname: ime operacijskega sistema, kot niz. Možne vrednosti so "WINDOWS", "LINUX", "MACOSX" in "SOLARIS".

Privzeta vrednost je ime trenutnega operacijskega sistema, na katerem se izvaja skript.

### Primer:

##### 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

Vrne True, če so vsi znaki v nizu šestnajstiške števke.

### Skladnja:

svc.IsHexDigit(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

Šestnajstiške števke imajo lahko predponi "0x" in "&H".

### Primer:

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

## IsIBAN

Vrne True, če je niz veljavna mednarodna številka bančnega računa IBAN (International Bank Account Number). Primerjava ne razlikuje med malimi in velikimi črkami.

### Skladnja:

svc.IsIBAN(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Vrnjena vrsta:

Vrne True, če niz vsebuje veljavno številko IBAN.

### Primer:

        ' 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

Vrne True, če je niz veljaven naslov IP(v4).

### Skladnja:

svc.IsIPv4(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

##### 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

Vrne True, če celotni vhodni niz ujema z danim vzorcem, ki vsebuje nadomestne znake.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

pattern: vzorec kot niz. Nadomestna znaka sta:

- "?" predstavlja poljuben posamezni znak;

- "*" predstavlja nič, enega ali več poljubnih znakov.

casesensitive: pri primerjanju lahko velja razlika med velikimi in malimi črkami ali ne (privzeta vrednost je False).

### Primer:

##### 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

Vrne True, če so vsi znaki v nizu male črke. Znaki izven abecede so prezrti.

### Skladnja:

svc.IsLower(inputstr: str): bool

### Parametri:

InputStr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

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

## IsPrintable

Vrne True, če so vsi znaki v nizu natisljivi.

### Skladnja:

svc.IsPrintable(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

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

## IsRegex

Vrne True, če se celotni vhodni niz ujema z danim regularnim izrazom.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

regex: regularni izraz. Če je prazno, metoda vrne False.

casesensitive: pri primerjanju lahko velja razlika med velikimi in malimi črkami ali ne (privzeta vrednost je False).

### Primer:

            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

Vrne True, če je vhodni niz veljavno ime delovnega lista za Calc.

### Skladnja:

svc.IsSheetName(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

##### 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

Ime delovnega lista ne sme vsebovati znakov [ ] * ? : / \ ali znak ' (apostrof) kot prvi ali zadnji znak.

## IsTitle

Vrne True, če je prvi znak vsake besede velika črka, drugi znaki pa so male črke.

### Skladnja:

svc.IsTitle(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

        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

Vrne True, če so vsi znaki v nizu velike črke. Znaki izven abecede so prezrti.

### Skladnja:

svc.IsUpper(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

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

## IsUrl

Vrne True, če je niz veljaven absolutni naslov URL (za angl. Uniform Resource Locator). Podprti so le protokoli http, https in ftp.

### Skladnja:

svc.IsUrl(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

##### 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

Vrne True, če so vsi znaki niza presledki.

### Skladnja:

svc.IsWhitespace(inputstr: str): bool

### Parametri:

inputstr: niz, ki bo preverjen. Če je prazno, metoda vrne False.

### Primer:

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

## JustifyCenter

Vrne vhodni niz, poravnan sredinsko.

Vodilni in sledilni presledki so odstranjeni in preostali znaki so zapolnjeni levo in desno do navedene dolžine length z znakom padding.

### Skladnja:

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

### Parametri:

inputstr:niz, ki ga želite sredinsko poravnati. Če je prazen, metoda vrne prazen niz.

length: dolžina izhodnega niza (privzeta vrednost je dolžina vhodnega niza).

Če je navedena dolžina krajša od sredinsko poravnanega vhodnega niza, je vrnjeni niz obrezan.

padding: posamezni znak, ki bo uporabljen za razmik do vsebine (privzeta vrednost je presledek ASCII " ").

### Primer:

        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

Vrne vhodni niz, poravnan levo.

Vodilni in sledilni presledki so odstranjeni in preostali znaki so zapolnjeni desno do navedene dolžine length z znakom padding.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo poravnan levo. Če je prazen, metoda vrne prazen niz.

length: dolžina izhodnega niza (privzeta vrednost je dolžina vhodnega niza).

Če je navedena dolžina krajša od levo poravnanega vhodnega niza, je vrnjeni niz obrezan.

padding: posamezni znak, ki bo uporabljen za razmik do vsebine (privzeta vrednost je presledek ASCII " ").

### Primer:

        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

Vrne vhodni niz, poravnan desno.

Vodilni in sledilni presledki so odstranjeni in preostali znaki so zapolnjeni levo do navedene dolžine length z znakom padding.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo poravnan desno. Če je prazen, metoda vrne prazen niz.

length: dolžina izhodnega niza (privzeta vrednost je dolžina vhodnega niza).

Če je navedena dolžina krajša od desno poravnanega vhodnega niza, je vrnjeni niz obrezan.

padding: posamezni znak, ki bo uporabljen za razmik do vsebine (privzeta vrednost je presledek ASCII " ").

### Primer:

        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

Vrne vhodni niz v enojnih ali dvojnih narekovajih. Obstoječi narekovaji so ohranjeni nespremenjeni, vključno z vodilnimi in/ali sledilnimi narekovaji.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo odet v oklepaje.

quotechar: enojni (') ali dvojni (") narekovaj (privzeto).

### Primer:

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

Ta metoda je lahko uporabna pri pripravi polja niza, ki bo shranjen v datoteki, podobni CSV, ki zahteva, da so besedilne vrednosti podane v enojnih ali dvojnih narekovajih.

## ReplaceChar

Zamenja vse pojavitve znakov, navedenih v parametru Before, z ustreznimi znaki, navedenimi v After.

Če je dolžina Before večja od dolžine After, bo preostale znake v Before zamenjal zadnji znak v After.

### Skladnja:

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

### Parametri:

inputstr: vhodni niz, v katerem se bodo izvedle zamenjave.

before: niz z znaki, ki bodo poiskani v vhodnem nizu in zamenjani.

after: niz z novimi znaki, ki bodo zamenjali tiste, določene v before.

### Primer:

        ' Zamenja naglašene znake
        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"

Storitev SF_String ponuja uporabne konstante (public) za latinične nize znakov, kar prikazuje spodnji primer:

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

## ReplaceRegex

Vse pojavitve danega regularnega izraza nadomesti z novim nizom.

### Skladnja:

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

### Parametri:

inputstr: vhodni niz, v katerem se bodo izvedle zamenjave.

regex: regularni izraz.

newstr: nadomestni niz.

casesensitive: pri primerjanju lahko velja razlika med velikimi in malimi črkami ali ne (privzeta vrednost je False).

### Primer:

        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." (vsako malo črko zamenja "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." (vsako besedo zamenja "x")

## ReplaceStr

V nizu zamenja nekatere ali vse pojavitve polja nizov s poljem novih nizov.

### Skladnja:

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

### Parametri:

inputstr: vhodni niz, v katerem se bodo izvedle zamenjave.

oldstr: posamezen niz ali polje nizov. Nizi ničelne dolžine so prezrti.

newstr: nadomestni niz ali polje nadomestnih nizov.

Če je oldstr polje, bo vsako pojavitev katerega od elementov oldstr zamenjal newstr.

Če sta oldstr in newstr polji, se zamenjave izvršijo ena za drugo do meje UBound(newstr).

Če ima oldstr več vnosov kot newstr, preostale elemente v oldstr zamenja zadnji element v newstr.

occurrences: največje število zamenjav. Privzeta vrednost je 0, kar pomeni, da bodo vse pojavitve zamenjane.

Če je oldstr polje, se parameter occurrence izračuna ločeno za vsak element polja.

casesensitive: pri primerjanju lahko velja razlika med velikimi in malimi črkami ali ne (privzeta vrednost je False).

### Primer:

        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

Vrne niz z berljivo reprezentacijo argumenta, odrezano na dani dolžini. To je uporabno predvsem za razhroščevanje ali beleženje dejavnosti.

Če je parameter anyvalue predmet, bo podan v oglatih oklepajih ("[" in "]").

V nizih se tabulatorji in prelomi vrstic zamenjajo z \t, \n in \r.

Če končna dolžina presega parameter maxlength, slednji del niza nadomesti " ... (N)", kjer je N skupna dolžina izvornega niza pred porezavo.

### Skladnja:

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

### Parametri:

anyvalue: vhodna vrednost, ki bo reprezentirana. Lahko je poljubna vrednost, kot je niz, polje, predmet Basic, predmet UNO itn.

maxlength: največja dolžina izhodnega niza. Privzeta vrednost je 0, kar pomeni, da ni omejitve dolžine vrnjene reprezentacije.

### Primer:

        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]"

Upoštevajte, da reprezentacija podatkovnih vrst, kot so polja in instanc predmetov ScriptForge.Dictionary vključuje tako vrsto podatkov kot njihove vrednosti:

        ' Primer z vgrajenim poljem Basic
        MsgBox SF_String.Represent(Array(1, 2, "Text" & Chr(9) & "here"))
        ' "[ARRAY] (0:2) (1, 2, Text\there)"
        ' Primer s poljem 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)"
        ' Primer s slovarjem 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

Vrne vhodni niz v obratnem zaporedju znakov.

Ta metoda je ekvivalentna vgrajeni funkciji Basic StrReverse.

Za uporabo funkcije StrReverse mora biti v modulu prisotna izjava OpTion VBASupport 1.

### Skladnja:

svc.Reverse(inputstr: str): str

### Parametri:

inputstr: niz, ki bo preobrnjen.

### Primer:

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

## SplitLines

Vrne ničelno polje nizov z vrsticami v vhodnem nizu. Vsak element polja je pridobljen z deljenjem vhodnega niza pri znakih za novo vrstico.

### Skladnja:

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

### Parametri:

inputstr: niz, ki ga želimo razdeliti.

keepbreaks: če je True, se prelomi vrstice v izhodnem polju ohranijo (privzeta vrednost je False).

### Primer:

        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

Razdeli niz v polje elementov z uporabo navedenega ločila.

Če podniz v navedku vsebuje ločilo, je prezrto. To je uporabno, ko razčlenjujete zapise, podobne CSV, ki vsebujejo citiranim nizom.

### Skladnja:

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

### Parametri:

inputstr: niz, ki ga želimo razdeliti.

delimiter: niz iz enega ali več znakov, ki bo uporabljen kot ločilo. Privzeto ločilo je znak ASCII za presledek (" ").

occurrences: največje število vrnjenih podnizov. Privzeta vrednost je 0, kar pomeni, da ni omejitve števila vrnjenih nizov.

quotechar: enojni (') ali dvojni (") narekovaj.

### Primer:

##### 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""', '')

Bodite pozorni na razlike med jezikoma Basic in Python pri reprezentaciji nizov. Primer: v Basicu sta dva znaka "" v nizu interpretirana kot en sam znak ". V Pythonu lahko nizi, zaobjeti z enojnimi narekovaji, vsebujejo znake ", ne da bi jih bilo potrebno podvajati.

## StartsWith

Vrne True, če so prvi znaki niza identični podanemu podnizu.

Ta metoda vrne False, če imata vhodni niz ali podniz dolžino = 0 ali če je podniz daljši od vhodnega niza.

### Skladnja:

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

### Parametri:

inputstr: niz, ki bo preverjen.

substring: podniz, ki bo iskan na začetku niza inputstr.

casesensitive: pri primerjanju lahko velja razlika med velikimi in malimi črkami ali ne (privzeta vrednost je False).

### Primer:

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

## TrimExt

Vrne vhodni niz brez vodilnih in sledilnih presledkov.

### Skladnja:

svc.TrimExt(inputstr: str): str

### Parametri:

inputstr: niz, ki bo obrezan.

### Primer:

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

## Unescape

Pretvori poljubno ubežno zaporedje (\\, \n, \r, \t) v vhodnem nizu v njegov ustrezni znak ASCII.

### Skladnja:

svc.Unescape(inputstr: str): str

### Parametri:

inputstr: niz, ki bo pretvorjen.

### Primer:

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

## Unquote

Odstrani enojne ali dvojne narekovaje, v katerih je morda vhodni niz.

To je uporabno, ko razčlenjujete zapise, podobne CSV, ki vsebujejo citiranim nizom.

### Skladnja:

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

### Parametri:

inputstr: niz, kateremu bodo odstranjeni narekovaji.

quotechar: enojni (') ali dvojni (") narekovaj (privzeto).

### Primer:

        Dim s as String
        ' s = "Nekaj besedila" (brez narekovajev)
        s = SF_String.Unquote("""Some text""")
        ' Spodnji niz ni podan v narekovajih, zato ostane nespremenjen
        ' s = "Nekaj besedila" (nespremenjeno)
        s = SF_String.Unquote("Some text")
        ' Narekovaji znotraj niza se ne odstranijo
        ' s = "Tisti ""pravi"" pomen" (nespremenjeno)
        s = SF_String.Unquote("The ""true"" meaning")

## Wrap

Pretvori vhodni niz v polje podnizov, tako da ima vsak element polja največ toliko znakov, kot je bilo podano.

V praksi ta metoda vrne prazno polje izhodnih vrstic brez oznak novih vrstic na koncu, razen prej obstoječih prelomov vrstic.

Tabulatorji se razširijo po enakem postopku kot z metodo ExpandTabs.

Simbolične prelome vrstic zamenja z njihovimi ekvivalentnimi znaki ASCII.

Če oviti izhod nima vsebine, je vrnjeno polje prazno.

### Skladnja:

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

### Parametri:

inputstr: niz za ovijanje.

width: največje število znakov v vsaki vrstici (privzeta vrednost je 70).

tabsize: pred ovijanjem besedila so obstoječi tabulatorski znaki Chr(9) zamenjani s presledki. TabSize določa položaj tabulatorskih mest po formuli TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (privzeta vrednost je 8).

### Primer:

##### 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...')

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic ali skriptih Python niso namenjeni.

Podobne teme

Storitev ScriptForge.Array

Funkcija String