Tenesta ScriptForge.String (SF_String)

Innhald

# Tenesta ScriptForge.String

Tenesta String leverer ei samling av metodar til strenghandsaming. Desse metodane kan brukast til:

- Kontrollera innhaldet i strengar

- Formater strengar ved å trimma, justera eller tekstbryta innhaldet

- Bruk regulære uttrykk til å søkja og erstatta understrengar

- Bruka hash-algoritmar på strengar og så vidare.

## Definisjonar

### Linjeskift

Tenesta String skjenner igjen desse linjeskifta:

Symbolsk namn | ASCII-nummer
--- | ---
Linjeskift Loddrett tabulator Vognretur Vognretur + linjeskift Fil-skiljeteikn Gruppe-skiljeteikn Post-skiljeteikn Ny linje Linje-skiljeteikn Avsnitts-skiljeteikn | 10 12 13 13 + 10 28 29 30 133 8232 8233

### Blankteikn

Tenesta String skjenner igjen desse blankteikna:

Symbolsk namn | ASCII-nummer
--- | ---
Mellomrom Vassrett tabulator Linjeskift Loddrett tabulator Sideskift Vognretur Neste linje Mellomrom utan linjeskift Linje-skiljeteikn Avsnitts-skiljeteikn | 32 9 10 11 12 13 133 160 8232 8233

### Escape-sekvensar

Nedanfor er ei liste over escape-sekvensar som kan brukast i strengar.

Escape-sekvensar | Symbolsk namn | ASCII-nummer
--- | --- | ---
\n \r \t | Linjeskift Vognretur Vassrett tabulator | 10 13 9

For å unngå at escape-sekvensen "\n" vert tolka som ein gjeldande streng, bruk "\\n" i staden for "\" & Chr(10).

### Teikn som ikkje kan skrivast ut:

Teikn som i Unicode Character Database er definerte som “Other” eller “Separator” vert sett på som teikn som ikkje kan skrivast ut.

Kontrollteikn (ascii code <= 0x1F) vert også sett på som teikn som ikkje kan skrivast ut.

### Hermeteikn inne i strengar:

For å setja inn hermeteikna ' (enkelt hermeteikn) og " (dobbelt hermeteikn) i strengar, bruk \' og \". For eksempel:

- Strengen [str\e\'ng] vert tolka som som [str'e'ng]

- Strengen [str\"e\"ng] vert tolka som som [str"e"ng]

## Oppkall av tenester

Før du kan bruka tenesta ScriptForge.String, må du henta inn biblioteket ScriptForge med:

##### I Basic

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

Lastinga av biblioteket vil laga objektet SF_String som kan brukast for å kalla opp metodane i tenesta String.

Desse kodesnuttane viser tre måtar for å kalla opp metodar i tenesta String (Capitalize er brukt som eksempel):

        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

##### I Python

Kodesnutten nedanfor viser korleis metodar frå tenest String kan kallast opp i Python-skript. Metoden IsIPv4 vert brukt som eksempel.

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

## Eigenskapar

Objektet SF_String inneheld desse eigenskapane for Basic-kript:

Name | Skriveverna | Beskriving
--- | --- | ---
sfCR | Ja | Vognretur
sfCRLF | Ja | Vognretur + linjeskift: Chr(13) & Chr(10)
sfLF | Ja | Linjeskift: Chr(10)
sfNEWLINE | Ja | Vognretur + linjeskift, som kan vera 1) Chr(13) & Chr(10) eller 2) Linjeskift: Chr(10) avhengig av operativsystemet.
sfTAB | Ja | Vassrett tabulator: Chr(9)

Du kan bruka eigenskapane ovanfor for å identifisera eller setja inn dei tilsvarande teikna i strengar. For eksempel kan teiknet for linjeskift bytast ut med SF_String.sfLF.

Liste over metodar i tenesta 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

Det første argumentet for dei fleste metodane er strengen som skal vurderast. Han vert alltid sendt vidare som referanse og vert ikkje endra. Metodar som Capitalize, Escape og så vidare returnerer ein ny streng etter at dei er utførte.

Fordi Python har omfattande innebygd strengstøtte, er dei fleste metodane i tenesta String berre tilgjengelege for grunnleggjande skript. Metodane som er tilgjengelege for Basic og Python er: HashStr, IsADate, IsEmail, IsFileName, IsIBAN, IsIPv4, IsLike, IsSheetName, IsUrl, SplitNotQuoted og Wrap.

## Capitalize

Skriv den første bokstaven i kvart ord som stor bokstav i inndata-strengen.

### Syntaks:

svc.Capitalize(inputstr: str): str

### Parametrar:

InputStr: Strengen som skal skrivast med stor bokstav.

### Eksempel:

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

## Count

Tel kor mange gongar ein delstreng eller eit regulært uttrykk finst i ein streng.

### Syntaks:

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

### Parametrar:

inputstr: Inndatastrengen som skal kontrollerast

substring: Delstrengen eller det regulære uttrykket som skal brukast ved søkinga

isregex: Bruk ann viss understrengen er eit regulært uttrykk ( standard = Usann)

casesensitive: Søket kan skilja mellom store og små bokstavar eller ikkje (standard = Usann).

### Eksempel:

        ' Tel kor ofte delstrengen "or" finst i strengen (returnerer 2)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "or", CaseSensitive := False)
        ' Tel kor mange ord det er med berre små bokstavar (returnerer 7)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "\b[a-z]+\b", IsRegex := True, CaseSensitive := True)

Du kan finna meir om regulære uttrykk i dokumentasjonen for Python på nettsida Regular Expression Operations.

## EndsWith

Returnerer Sann viss ein streng sluttar med den spesifiserte understrengen.

Funksjonen returnerer Usann når ein streng eller ein understreng har lengd = 0 eller viss understrengen er lengre enn strengen.

### Syntaks:

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

### Parametrar:

InputStr: Strengen som skal kontrollerast.

substring: Understrengen som skal søkjast i på slutten av inputstr.

casesensitive: Søket kan skilja mellom store og små bokstavar eller ikkje (standard = Usann).

### Eksempel:

        ' Returnerer Sann fordi metoden vart kalla opp med standarden "CaseSensitive = Usann"
        MsgBox SF_String.EndsWith("abcdefg", "EFG")
        ' Returnerer «Usann» på grunn av parametera sette i CaseSensitive
        MsgBox SF_String.EndsWith("abcdefg", "EFG", CaseSensitive := True)

## Escape

Konverterer linjebrytingar og tabulatorar i inndatastrengen til den tilsvarande escape-sekvensen (\\, \n, \r, \t).

### Syntaks:

svc.Escape(inputstr: str): str

### Parametrar:

inputstr: Strengen som skal konverterast.

### Eksempel:

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

## ExpandTabs

Erstattar tabulator-teikn Chr(9) med mellomromsteikn for å gjenskape verkemåten til tabulatorane.

Viss det finst eit linjeskift, vert det byrja på ei ny linje og teiknteljaren vert sett til null.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal utvidast

tabsize: Denne parameteren vert brukt for å bestemma tabulatorsettingane med formelen TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (Standard = 8)

### Eksempel:

        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

Byter ut alle teikna som ikkje kan skrivast ut med eit gjeve teikn.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal søkjast etter

replacedby: Null, eitt eller fleire teikn som erstattar alle teikna som ikkje kan skrivast ut i inputstr (standard = "")

### Eksempel:

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

## FindRegex

Finn ein delstreng i ein streng som samsvarar med eit gjeve regulært uttrykk.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal søkjast etter

regex: Det regulære uttrykket

start: Staden i strengen der søket skal byrja. Denne parameteren vert sendt med referanse, så etter køyringa vil verdien av start peika til det første teiknet i den funne understrengen. Viss det ikkje vert funne nokon samsvarande understreng, vert start sett til 0.

casesensitive: Søket kan skilja mellom store og små bokstavar eller ikkje (standard = Usann).

forward: Bestemmer retninga for søket. Viss Sann, vert det søkt framover, viss Usann bakover. (Standard = Sann)

Viss forward = Sann i den første gjentakinga, bør start vera lik 1, men er forward = Usann bør start vera lik Len(inputstr

### Eksempel:

        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

I eksempelet ovanfor kan den nye verdien for lStart brukast for å søkja i den same inndatastrengen ved å setja parameteren Start til lStart + Len(result) i den neste gjentakinga.

## HashStr

Hash-funksjonar vert brukte av nokre kryptografiske algoritmar, i digitale signaturar, meldings-godkjenningskodar, oppdaging av manipulering, fingeravtrykk, kontrollsummar (kontroll av meldingsintegritet), hash-tabellar, lagring av passord og mykje meir.

Metoden HashStr returnerer resultatet av ein hash-funksjon som er brukt på ein gjeven streng og med ein spesifisert algoritme. Den returnerte verdien er ein streng av heksadesimale siffer skrive med små bokstavar.

Dei støtta hash-algoritmane er: MD5, SHA1, SHA224, SHA256, SHA384 og SHA512.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal «hashast». Det vert gått ut frå at han er koda i UTF-8. Hash-algoritmen oppfattar strengen som ein sekvens av byte.

algoritme: Ein av dei støtta algoritmane lista opp ovanfor, sendt vidare som ein streng.

### Eksempel:

##### I Basic

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

##### I Python

        svc = CreateScriptService("String")
        bas = CreateScriptService("Basic")
        a_string = "œ∑¡™£¢∞§¶•ªº–≠œ∑´®†¥¨ˆøπ‘åß∂ƒ©˙∆˚¬"
        hash_value = svc.HashStr(a_string, "MD5")
        bas.MsgBox(hash_value)
        # c740ccc2e201df4b2e2b4aa086f35d8a

## HtmlEncode

Kodar inndatastrengen i HTML-teiknkoder og byter ut spesialteikn med tilsvarande &-teikn.

Teiknet é vert for eksempel byt ut med &eacute; eller ein tilsvarande numerisk HTML-kode.

### Syntaks:

svc.HtmlEncode(inputstr: str): str

### Parametrar:

inputstr: Strengen som skal kodast.

### Eksempel:

        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

Returnerer Sann viss inndatastrengen er ein gyldig dato etter eit bestemt datoformat.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal kontrollerast, Viss tom, returnerer metoden Usann

datoformat: Datoformatet som ein streng. Det kan vera anten "YYYY-MM-DD" (Standard), "DD-MM-YYYY" eller "MM-DD-YYYY"

Bindestreken (-) kan bytast ut med eit punktum (.), ein skråstrek (/) eller eit mellomrom.

Viss formatet er ugyldig, returnerer metoden Usann.

### Eksempel:

##### I Basic

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

Denne metoden kontrollerer formatet til inndatastrengen utan å gjera kalenderspesifikke kontrollar. Difor testar han ikkje inndatastrengen for skotår eller månader med 30 eller 31 dagar. For å gjera det, sjå den innebygde funksjonen IsDate.

Eksempelet nedanfor viser skilnaden mellom metodane IsADate (ScriptForge) og funksjonen IsDate (innebygd).

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

##### I Python

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

## IsAlpha

Returnerer Sann viss alle teikna i strengen er alfabetiske.

Alfabetiske teikn er dei teikna som i Unicode Character Database er definerte som bokstavar.

### Syntaks:

svc.IsAlpha(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

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

## IsAlphaNum

Returnerer Sann viss alle teikna i strengen er alfabetiske, siffer eller "_" (understrek). Det første teiknet kan ikkje vera eit siffer.

### Syntaks:

svc.IsAlphaNum(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann.

### Eksempel:

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

## IsAscii

Returnerer Sann viss alle teikna i strengen er ASCII-teikn.

### Syntaks:

svc.IsAscii(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

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

## IsDigit

Returnerer Sann viss alle teikna i strengen er siffer.

### Syntaks:

svc.IsDigit(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

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

## IsEmail

Returnerer Sann viss strengen er ei gyldig e-postadresse.

### Syntaks:

svc.IsEmail(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

##### I Basic

        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

##### I Python

        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

Returnerer Sann viss strengen er eit gyldig filnamn i eit gjeve operativsystem.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

osname: Namnet på operativsystemet som ein streng. Det kan vera «WINDOWS», «LINUX», «MACOSX» eller «SOLARIS».

Standardverdien er det gjeldande operativsystem, som skriptet køyrer på.

### Eksempel:

##### I Basic

        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

##### I Python

        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

Returnerer Sann viss alle teikna i strengen er heksadesimale siffer.

### Syntaks:

svc.IsHexDigit(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

Dei heksadesimale sifra kan ha prefikset «0x» eller «&H».

### Eksempel:

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

## IsIBAN

Returnerer Sann viss strenge er eit gyldig «Internationalt Bank Account Nummer» (IBAN). Samanlikninga skil ikkje mellom store og små bokstavar.

### Syntaks:

svc.IsIBAN(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Returtype:

Sann viss strengen inneheld eit gyldig IBAN-nummer.

### Eksempel:

        ' 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

Returnerer Sann viss strengen er ei gyldig IP-adresse (v4).

### Syntaks:

svc.IsIPv4(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

##### I Basic

        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

##### I Python

        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

Returnerer Sann viss heile inndatastrengen samsvarar med eit gjeve mønster som inneheld jokerteikn.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

pattern: Mønsteret som ein streng. Jokerteikna er:

- "?" står for eitt enkelt teikn,

- "*" står for ingen, eitt eller fleire teikn.

casesensitive: Søket kan skilja mellom store og små bokstavar eller ikkje (standard = Usann).

### Eksempel:

##### I Basic

        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

##### I Python

        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

Returnerer Sann viss alle teikna i strengen er små. Teikn som ikkje er alfabetiske vert ignorerte.

### Syntaks:

svc.IsLower(inputstr: str): bool

### Parametrar:

inputStr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

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

## IsPrintable

Returnerer Sann viss alle teikna i strengen kan skrivast ut.

### Syntaks:

svc.IsPrintable(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

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

## IsRegex

Returnerer Sann viss heile inndatastrengen samsvarar med eit gjeve regulært uttrykk.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

regex: Det regulære uttrykket. Viss tom vil metoden returnere Usann.

casesensitive: Søket kan skilja mellom store og små bokstavar eller ikkje (standard = Usann).

### Eksempel:

            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

Returnerer Sann viss inndatastrengen er eit gyldig arknamn i Calc.

### Syntaks:

svc.IsSheetName(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

##### I Basic

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

##### I Python

        svc = CreateScriptService("String")
        bas = CreateScriptService("Basic")
        bas.MsgBox(svc.IsSheetName("1àbc + ""déf""")) # True
        bas.MsgBox(svc.IsSheetName("[MySheet]")) # False

Eit arknamn må ikkje innehalda teikna [, ], *, ?, :, /, \ eller teiknet ' (apostrof) som første eller siste teikn.

## IsTitle

Returnerer Sann viss det første teikn i kvart ord er skrive med stor bokstav og dei andre teikna er små bokstavar.

### Syntaks:

svc.IsTitle(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

        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

Returnerer Sann viss alle bokstavane i strengen er store. Teikn som ikkje er alfabetiske vert ignorerte.

### Syntaks:

svc.IsUpper(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

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

## IsUrl

Returnerer Sann viss strengen er ein gyldig absolutt URL (Uniform Resource Locator)-adresse. Det er støtte berre for protokollane http, https og ftp.

### Syntaks:

svc.IsUrl(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

##### I Basic

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

##### I Python

        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

Returnerer Sann viss alle teikna i strengen er blankteikn.

### Syntaks:

svc.IsWhitespace(inputstr: str): bool

### Parametrar:

inputstr: Strengen som skal kontrollerast. Viss tom, returnerer metoden Usann

### Eksempel:

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

## JustifyCenter

Returnerer inndata-strengen midtstilt.

Dei innleiande og avsluttande blankteikna vert fjerna og teikna som er igjen vert supplerte til høgre og venstre opp til den gjevne totalsummen length med teiknet padding.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal midtstillast. Viss tom, returnerer metoden ein tom streng.

length: Lengda på den resulterande strengen (standard = lengda på inndatastrengen).

Viss den gjevne strengen er kortare enn den midtstilte inndatastrengen, vert den returnerte strengen avkorta.

padding: Det enkeltteiknet som skal brukast som fyll (standard = Ascii-mellomrommet « »).

### Eksempel:

        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

Returnerer inndata-strengen venstrejustert.

Dei innleiande blankteikna vert fjerna og teikna som er igjen vert supplerte til høgre opp til den gjevne totalsummen length med teiknet padding.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal venstrejusterast. Viss tom, returnerer metoden ein tom streng.

length: Lengda på den resulterande strengen (standard = lengda på inndatastrengen).

Viss den gjevne strengen er kortare enn den venstrejusterte inndatastrengen, vert den returnerte strengen avkorta.

padding: Det enkeltteiknet som skal brukast som fyll (standard = Ascii-mellomrommet « »).

### Eksempel:

        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

Returnerer inndata-strengen høgrejustert.

Dei innleiande blankteikna vert fjerna og teikna som er igjen vert supplerte til venstre opp til den gjevne totalsummen length med teiknet padding.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal høgrejusterast. Viss tom, returnerer metoden ein tom streng.

length: Lengda på den resulterande strengen (standard = lengda på inndatastrengen).

Viss den gjevne strengen er kortare enn den høgrejusterte inndatastrengen, vert den returnerte strengen avkorta.

padding: Det enkeltteiknet som skal brukast som fyll (standard = ASCII-mellomrommet « »).

### Eksempel:

        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

Returnerer inndatastrengen mellom enkle eller doble hermeteikn. Hermeteikn som finst frå før vert ikkje endra, medrekna innleiande og/eller avsluttande hermeteikn.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal setjast mellom sitatteikn.

quotechar: Anten enkelt (') eller dobbelt (") hermeteikn (standard).

### Eksempel:

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

Denne metoden kan vera nyttig når du gjer klar eit strengfelt som skal lagrast i ei csv-liknande fil, noko som krev at tekstverdiar vert omgjevne av enkle eller doble sitatteikn.

## ReplaceChar

Byter ut alle førekomstar av teikna som er gjevne i parameteren Before med dei tilsvarande teikna som er gjevne i After.

Viss lengda av Before er større enn lengda av After, vert dei resterande teikna i Before bytt ut med det siste teiknet i After.

### Syntaks:

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

### Parametrar:

inputstr: Inndata-strengen der bytinga skal skje.

before: Ein streng med teikna som det skal søkjast etter i inndatastrengen for å bytast ut.

after: Ein streng med nye teikn som skal bytast ut med dei som er definerte i before.

### Eksempel:

        ' Byter ut teikn med aksent
        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"

Tenesta SF_String inneheld nyttige delte konstantar for dei latinske teiknsetta, som vist i eksempelet nedanfor:

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

## ReplaceRegex

Byter ut alle førekomstar av eit gjeve regulært uttrykk med ein ny streng.

### Syntaks:

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

### Parametrar:

inputstr: Inndata-strengen der bytinga skal skje.

regex: Det regulære uttrykket.

newstr: Erstatningsstrengen.

casesensitive: Søket kan skilja mellom store og små bokstavar eller ikkje (standard = Usann).

### Eksempel:

        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." (kvar liten bokstav er erstatta med «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." kvart ord er erstatta med «x»)

## ReplaceStr

Byter ut nokre eller alle førekomstane av ei matrise med strengar med ei matrise med nye strengar.

### Syntaks:

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

### Parametrar:

inputstr: Inndata-strengen der bytinga skal skje.

oldstr: Ein enkelt streng eller ei matrise av strengar. Strengar med null-lengd vert ignorerte.

newstr: Erstatningsstrengen eller ei matrise av erstatningsstrengar.

Viss oldstr er ei matrise, vert kvar førekomst av kva element som helst i oldstr bytt ut med newstr.

Viss oldstr og newstr er matriser, skjer bytinga ein etter ein opp til UBound(newstr).

Viss oldstr har fleire oppføringar enn newstr, vert restelementa i oldstr bytt ut med det siste elementet i newstr.

occurrences: Det høgaste talet på erstatningar. Standardverdien er 0, som gjer at alle førekomstane vert bytte ut.

Når oldstr er ei matrise, vert parameteren occurrence rekna ut enkeltvis for kvart element i matrisa.

casesensitive: Søket kan skilja mellom store og små bokstavar eller ikkje (standard = Usann).

### Eksempel:

        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

Returnerer ein streng med ein lesbar representasjon av argumentet, avkorta til ei gjeve lengd. Dette er nyttig stort sett for feilsøkings- eller loggingsføremål.

Viss parameteren anyvalue er eit objekt, vert det omgjeve av hakeparentesane «[» og «]».

I strengar vert tabulatorar og linjeskift byt ut med \t, \n eller \r.

Viss den endelege lengda er større enn malength-parameteren, vert den siste delen av strengen erstatta med « … (N)» der N er den totale lengda på den opphavlege strengen før avkortinga.

### Syntaks:

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

### Parametrar:

anyvalue: Inndataverdien som skal representerast. Det kan vera kva verdi som helst, for eksempel ein streng, ei matrise, eit Basic-objekt, eit UNO-objekt osv.

maxlength: Den maksimale lengda på den resulterande strengen. Standardverdien er 0, som gjer at det ikkje er noko grense for lengda på den resulterande representasjonen.

### Eksempel:

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

Legg merke til at representasjonen av datatypar som matriser og ScriptForge.Dictionary objektførekomstar tek med både datatypen og verdiane:

        ' Et eksempel med ei innebygd Basic-matrise
        MsgBox SF_String.Represent(Array(1, 2, "Text" & Chr(9) & "here"))
        ' "[ARRAY] (0:2) (1, 2, Text\there)"
        ' Eit eksempel med ei ScriptForge-matrise
        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)"
        ' Eit eksempel med ei ScriptForge-ordbok
        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

Returnerer inndata-strengen i omvend rekkjefølgje.

Denne metoden svarar til den innebygde Basic-funksjonen StrReverse.

For å bruka funksjonen StrReverse må uttrykket OpTion VBASupport 1 vera tilstades i modulen.

### Syntaks:

svc.Reverse(inputstr: str): str

### Parametrar:

inputstr: Strengen som skal reverserast.

### Eksempel:

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

## SplitLines

Returnerer ei null-basert matrise av strengar med linjene i inndatastrengen. Kvart element i matrisa vert hent ved å dela inndatastrengen ved linjeskiftteikna.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal delast.

keepbreaks: Når denne er Sann, vert linjeskift ikkje endra i utdatamatrisa (standard = Usann).

### Eksempel:

        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

Deler ein streng inn i ei matrise av element ved hjelp av eit spesifisert skiljeteikn.

Viss ein delstreng sett mellom sitatteikn inneheld eit skiljeteikn, vert skiljeteiknet ignorert. Dette er nyttig når du analyserer CSV-liknande oppføringar som inneheld strengar i sitatteikn.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal delast.

delimiter: Ein streng med eitt eller fleire teikn som skal brukast som skiljeteikn. Standard-skiljeteiknet er ASCII-mellomromsteiknet « ».

occurrences: Det høgaste talet på understrengar som skal returnerast. Standardverdien er 0, som betyr at det ikkje er noko grense for kor mange strengar som kan returnerast.

quotechar: Anten enkelt (') eller dobbelt (") hermeteikn.

### Eksempel:

##### I Basic

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

##### I Python

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

Når du representerer strengar, ver merksam på skilnadane mellom Basic og Python. I Basic vert for eksempel to doble hermeteikn ("") i ein streng sett på som eitt enkelt dobbelt hermeteikn ("). I Python kan strengar i enkle hermeteikn innehalda doble hermeteikn (") uten å måtta dobla dei.

## StartsWith

Returnerer Sann viss dei første teikna i ein streng er identiske med ein gjeven understreng.

Denne metoden returnerer Usann når ein streng eller ein understreng har lengd = 0 eller viss understrengen er lengre enn inndatastrengen.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal kontrollerast.

substring: Understrengen som skal søkjast i byrjinga av inputstr.

casesensitive: Søket kan skilja mellom store og små bokstavar eller ikkje (standard = Usann).

### Eksempel:

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

## TrimExt

Returnerer inndatastrengen utan innleiande eller avsluttande blankteikn.

### Syntaks:

svc.TrimExt(inputstr: str): str

### Parametrar:

inputstr: Strengen som skal trimmast.

### Eksempel:

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

## Unescape

Omformar alle escape-sekvensar (\\, \n, \r, \t) i inndatastrengen til dei tilsvarande ASCII-teikna.

### Syntaks:

svc.Unescape(inputstr: str): str

### Parametrar:

inputstr: Strengen som skal konverterast.

### Eksempel:

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

## Unquote

Fjernar dei enkle eller doble hermeteikna som omsluttar inndatastrengen.

Dette er nyttig når du analyserer CSV-liknande oppføringar som inneheld strengar i hermeteikn.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som sitatteikna skal fjernast frå.

quotechar: Anten enkelt (') eller dobbelt (") hermeteikn (standard).

### Eksempel:

        Dim s as String
        ' s = "Ein tekst" (utan omgjevande sitatteikn)
        s = SF_String.Unquote("""Some text""")
        ' Strengen nedanfor er ikkje omslutta med sitatteikn, så han vert ikkje endra
        ' s = "Ein tekst" (uendra)
        s = SF_String.Unquote("Some text")
        ' Hermeteikn inne i strengen vert ikkje fjerna
        ' s = "Den ""sanne"" meininga" (uendra)
        s = SF_String.Unquote("The ""true"" meaning")

## Wrap

Konverterer inndatastrengen til ei matrise med delstrengar, slik at kvart element i matrisa har eit maksimalt gjeve tal på teikn.

I praksis returnerer denne metoden ei nullbasert matrise med utdatalinjer, utan nye linjer på slutten, bortsett frå dei linjeskifta som finst frå før.

Tabulatorane vert utvida med den same prosedyren utført av metoden ExpandTabs.

Symbolske linjeskift vert bytte ut med dei tilsvarande ASCII-teikna.

Viss dei skifte utdataa ikkje har noko innhald, er den returnerte matrisa tom.

### Syntaks:

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

### Parametrar:

inputstr: Strengen som skal skiftast til ny linje.

width: Det høgaste talet på teikn i kvar linje (standard= 70).

tabsize: Før linjeskiftet vert TAB Chr(9)-teikna bytte ut med mellomrom. Argumentet tabsize definerer TAB-stopparane ved «TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1» (Standard = 8).

### Eksempel:

##### I Basic

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

##### I Python

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

Alle ScriptForge Basic-rutinane og -identifikatorane som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje meint brukte i Basic-makroar.

Liknande emne

ScriptForge.Array-teneste

String-funksjonen