Indhold

# Tjenesten ScriptForge.String (streng)

Tjenesten String (streng) leverer en samling af metoder til streng-behandling. Disse metoder kan bruges til:

- Validere strengenes indhold

- Formatere strenge ved at trimme, justere eller ombryde deres indhold.

- Bruge regulære udtryk til at søge og erstatte understrenge

- Anvende hash-algoritmer på strenge og så videre.

## Definitioner

### Line breaks (linjeskift)

Tjenesten String (streng) genkender følgende linjeskift:

Symbolic name (Symbolsk navn) | ASCII number (ASCII-nummer)
--- | ---
Linjeskift Lodret tabulator Vognretur Vognretur + Linjeskift Fil-skilletegn Gruppe-skilletegn Post-skilletegn Næste linje Linje-skilletegn Afsnits-skilletegn | 10 12 13 13 + 10 28 29 30 133 8232 8233

### Blanktegn

Tjenesten String (streng) genkender disse blanktegn:

Symbolic name (symbolsk navn) | ASCII number (ASCII-nummer)
--- | ---
Mellemrum Vandret tabulator Linjeskift Lodret tabulator Sideskift Vognretur Næste linje Mellemrum uden ombrydning Linje-skilletegn Afsnits-skilletegn | 32 9 10 11 12 13 133 160 8232 8233

### Escape sequences (Undvigesekvenser)

Herunder ses en liste over undvigesekvenser, der kan bruges i strenge.

Undvigesekvens | Symbolic name (symbolsk navn) | ASCII number (ASCII-nummer)
--- | --- | ---
\n \r \t | Linjeskift Vognretur Vandret tabulator | 10 13 9

For at få undvigesekvensen "\n" fortolket som som en faktisk streng, bruger du simpelthen "\\n" i stedet for "\" & Chr(10).

### Kontroltegn:

Tegn, der er i Unicode Character Database er defineret som “Other” (andet) eller “Separator” (skilletegn) anses som kontroltegn (der ikke udskrives).

Kontrolkarakterer (ASCII-kode <= 0x1F = 31, dvs. tegn som ligger før mellemrumstegnet) bliver også betragtede som kontroltegn.

### Anførselstegn inde i strenge:

Til at tilføje anførselstegn i strenge bruger du \' (enkelt anførselstegn) eller \" (dobbelt anførselstegn). For eksempel:

- Strengen [str\'e\'ng] fortolkes som [str'e'ng]

- Strengen [str\"e\"ng] fortolkes som [str"e"ng]

## Kald af tjeneste

Før du bruge tjenesten ScriptForge.String (streng) skal biblioteket ScriptForge være hentet med:

##### I Basic

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

Indlæsning af biblioteket vil oprette objektet SF_String, der kan bruges til kalde metoderne i tjenesten String.

De følgende kode-bidder viser de måder at kalde metoder fra tjenesten String (metoden Capitalize (kapitaliser) bruges 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

Kode-bidden herunder illustrerer, hvordan metoder fra tjenesten String kaldes i Python-scripts. Metoden IsIPv4 bruges som eksempel.

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

## Egenskaber

Objektet SF_String giver Basic-scripts følgende egenskaber:

Navn | Skrivebeskyttet | Beskrivelse
--- | --- | ---
sfCR | Yes (ja) | Carriage return (Vognretur): Chr(13)
sfCRLF | Yes (ja) | Carriage return + Linefeed (Vognretur + Linjeskift): Chr(13) & Chr(10)
sfLF | Yes (ja) | Linefeed (linjeskift): Chr(10)
sfNEWLINE | Yes (ja) | Carriage return + Linefeed (vognretur + linjeskift), som kan være 1) Chr(13) & Chr(10) eller 2) Linefeed (linjeskift): Chr(10) afhængigt af operativsystemet.
sfTAB | Yes (ja) | Horizontal tabulation (vandret tabulator): Chr(9)

Du kan bruge egenskaberne herover til at identificere eller indsætte de tilsvarende tegn i strenge. For eksempel kan tegnet Linjeskift erstattes med SF_String.sfLF.

Liste over metoder i tjenesten String (tekststrenge)

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 argument i de fleste metoder er strengen, der skal behandles. Den overføres altid som henvisning og efterlades uændret. Metoder såsom Capitalize (Skriv med Stort), Escape (Undgå) og så videre returnerer en ny streng efter udførelsen af dem.

Fordi Python har en omfattende, indbygget understøttelse af strenge. De fleste af metoderne i tjenesten String er udelukkende tilgængelige med Basic-scripts. De metoder, der tilgængelige for Basic- og Python er: HashStr, IsADate (er_dato), IsEmail (er_e-mail), IsFileName (er_filnavn), IsIBAN (er_IBAN), IsIPv4 (er_IPv4), IsLike (ligner), IsSheetName (er_arknavn), IsUrl (er_URI), SplitNotQuoted (???) og Wrap (ombryd).

## Capitalize

Skriver Første Bogstav Med Stort i hvert ord i input-strengen.

### Syntaks:

svc.Capitalize(inputstr: str): str

### Parametre:

inputstr: Den streng, der skal skrives med Stort.

### Eksempel:

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

## Count

Tæller antallet af forekomster af en understreng eller et regulært udtryk inde i en streng.

### Syntaks:

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

### Parametre:

inputstr: Den input-streng, der skal undersøges

delstreng (understreng): Den delstreng eller det regulære udtryk, der skal bruges under søgningen

isregex (er_regex): Brug True (sand), hvis understrengen er et regulært udtryk ( standard = False (falsk))

Forskel på store og små bogstaver: Søgningen kan skelne mellem store og små bogstaver eller ikke (Standard = False (FALSK)).

### Eksempel:

        'Tæller forekomsterne af delstrengen "eller " inde i input-strengen (returnerer 2)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "or", CaseSensitive := False)
        'Tæller antallet af ord med udelukkende små bogstaver (returnerer 7)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "\b[a-z]+\b", IsRegex := True, CaseSensitive := True)

Få mere at vide om regulære udtryk ved at se Pythons dokumentation om Regular Expression Operations.

## EndsWith

Returnerer True (sand), hvis en streng slutter med en angiven delstreng.

Funktionen returnerer False (falsk), når enten en streng eller en delstreng har længden = 0 eller når delstrengen er længere end strengen.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal testes.

substring (delstreng): Den delstreng, der søges fra slutningen af inputstr.

Forskel på store og små bogstaver: Søgningen kan skelne mellem store og små bogstaver eller ikke (Standard = False (FALSK)).

### Eksempel:

        'Returnerer True, fordi metoden blev kaldt med standarden CaseSensitive (Stort og småt) = False (falsk)
        MsgBox SF_String.EndsWith("abcdefg", "EFG")
        'Returnerer False på grund af parameteren CaseSensitive
        MsgBox SF_String.EndsWith("abcdefg", "EFG", CaseSensitive := True)

## Escape

Konverterer linjeskift og tabulatorstop, der er indeholdt i input-strengen, til deres tilsvarende undvigelsessekvenser (\\, \n, \r, \t).

### Syntaks:

svc.Escape(inputstr: str): str

### Parametre:

inputstr: Den streng, der skal konverteres.

### Eksempel:

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

## ExpandTabs

Erstatter Tabulator-tegn Chr(9) med mellemrum for at gentage tabulatorstoppenes adfærd..

Hvis der findes et linjeskift, startes en ny linje og tegntælleren nulstillles.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal udvides

tabsize (tabulatorafstand): Denne parameter bruges til at bestemme Tabulatorstop med formlen: 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

Erstatter alle kontroltegn i input-strengen med et givet tegn.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal søges

replacedby (erstattet af): Nul, ét eller flere tegn, der skal erstatte alle kontroltegn 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

Finder en delstreng, der matcher et givet regulært udtryk, i en streng.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal søges

regex: Det regulære udtryk

start: Den placering, hvor søgningen skal begynde, Denne parameter videregives som henvisning, således af værdien af start efter udførelsen vil pege på det første tegn af den fundne delstreng, Hvis der ikke findes nogen matchende delstreng, bliver start sat til 0.

Forskel på store og små bogstaver: Søgningen kan skelne mellem store og små bogstaver eller ikke (Standard = False (FALSK)).

forward (fremad): Bestmmer søgningens retning. Når True (sand), bevæger søgningen sig fremad. Hvis False (falsk), bevæger søgningen sig baglæns (Standard = True (sand))

Hvis forward = True (fremad = sand) i den første gentagelse, bør start være lig med 1, men hvis forward = False (fremad = falsk) bør start være lig med Len(inputstr) (længde(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 eksemplet ovenfor kan lStarts nye værdi bruges til at blive ved med at søge i den samme input-streng ved at sætte parameteren Start til lStart + Len(result) (lStart + længde(resultat)) i den næste gentagelse.

## HashStr

Hash-funktioner bruges indenfor nogle kryptografiske algoritmer, i digitale signaturer, beskeders autentifikationskoder, afsløring af manipulation, fingeraftrryk, tjeksummer (integritetstjek af beskeder) hash-tabeller, lagring af adgangskoder og meget mere.

Metoden HashStr returnerer resultatet af en hash-funktionen anvendt på en givet streng og med en angiver algoritme, som en streng af hexadecimale cifre med små bogstaver.

De understøttede hash-algoritmer er: MD5, SHA1, SHA224, SHA256, SHA384 and SHA512.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal hashes. den forudsættes at være indkodet i UTF-8. Hashing algoritmen vil betragte strengen som en strøm af bytes.

algoritme: En af de understøttede algoritmer, oplistet ovenfor, videregivet som en 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

Indkoder input-strengen som HTML-tegnkoder og erstatter specialtegn med deres & modparter.

Tegnet é bliver for eksempel erstattet med &eacute; eller en tilsvarende numerisk HTML-kode.

### Syntaks:

svc.HtmlEncode(inputstr: str): str

### Parametre:

inputstr: Den streng, der skal indkodes.

### 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 True (sand), hvis input-strengen er en gyldig dato efter et bestemt datoformat.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal tjekkes, Hvis tom, returnerer metoden False (falsk)

datoformat: Datoformatet som en streng. Det kan være enten "YYYY-MM-DD" (Standard), "DD-MM-YYYY" eller "MM-DD-YYYY"

Bindestregen (-) kan erstatttes af et punktum (.), en skråstreg (/) eller et mellemrum.

Hvis formatet er ugyldigt, returnerer metoden False (falsk).

### Eksempel:

##### I Basic

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

Denne metode tjekker input-strengens format uden af udføre nogen kalender-specifikke tjeks. Derfor tester den ikke input-strengen for skudår eller måneder med 30 eller 31 dage. Dertil henvises du til den indbyggede funktion IsDate (er dato).

Eksemplet herunder viser forskellen mellem metoderne IsADate (er en dato) (ScriptForge) og den (indbyggede) funktion IsDate (er dato).

        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 True (sand), hvis alle tegn i strengen er alfabetiske.

Alfabetiske tegn er de tegn, der i Unicode Character Database er defineret som Letter (bogstav).

### Syntaks:

svc.IsAlpha(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### Eksempel:

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

## IsAlphaNum

Returnerer True (sand), hvis alle tegn i strengen er alfabetiske, cifre eller "_" (understregning). Det første tegn må ikke være et ciffer.

### Syntaks:

svc.IsAlphaNum(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### Eksempel:

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

## IsAscii

Returnerer True hvis alle tegn i strengen er ASCII-tegn.

### Syntaks:

svc.IsAscii(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### Eksempel:

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

## IsDigit

Returnerer True (sand), hvis alle tegn i strengen er cifre.

### Syntaks:

svc.IsDigit(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### Eksempel:

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

## IsEmail

Returnerer True (sand), hvis strengen er en gyldig e-mailadresse.

### Syntaks:

svc.IsEmail(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### 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 True (sand), hvis strengen er et gyldigt filnavn i et givet operativsystem.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

osnavn: Operativsystemets navn som en streng. Det kan være "WINDOWS", "LINUX", "MACOSX" eller "SOLARIS".

Standardværdien er det aktuelle operativsystem, som scriptet kører 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 True (sand), hvis alle tegn i strengen er hexadecimale cifre.

### Syntaks:

svc.IsHexDigit(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

De hexadecimale cifre kan have præfixet "0x" eller "&H".

### Eksempel:

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

## IsIBAN

Returnerer True (sand), hvis strenge er et gyldig Internationalt Bank Account (konto) Nummer (IBAN). Sammenligningen skelner ikke mellem stort og småt.

### Syntaks:

svc.IsIBAN(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### Returtype

True (sand), hvis strengen indeholder et gyldigt 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 True (sand), hvis strengen er en gyldig IP-adresse (v4).

### Syntaks:

svc.IsIPv4(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### 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 True (sand), hvis hele input-strengen matcher et givet mønster med jokere.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

mønster: Mønstret som en streng. Jokerne er:

- "?" repræsenterer et vilkårligt enkelttegn;

- "*" repræsenterer intet, et eller flere tegn.

Forskel på store og små bogstaver: Søgningen kan skelne mellem store og små bogstaver eller ikke (Standard = False (FALSK)).

### 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 True (sand), hvis alle tegn i strengen er små bogstaver. Ikke-alfabetiske tegn ignoreres.

### Syntaks:

svc.IsLower(inputstr: str): bool

### Parametre:

InputStr: Strengen, der skal tjekkes. hvis tom, returnerer metoden False (falsk).

### Eksempel:

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

## IsPrintable

Returnerer True (sand), hvis alle tegn i strengen kan udskrives.

### Syntaks:

svc.IsPrintable(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### Eksempel:

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

## IsRegex

Returnerer True (sand), hvis hele input-strengen matcher et givet regulært udtryk.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

regex: Det regulære udtryk. Hvis tom, returnerer metoden False (falsk).

Forskel på store og små bogstaver: Søgningen kan skelne mellem store og små bogstaver eller ikke (Standard = False (FALSK)).

### 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 True (sand), hvis input-strengen er et gyldigt arknavn i Calc.

### Syntaks:

svc.IsSheetName(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

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

Et arknavn må ikke indeholder tegnene [ ] * ? : / \ eller tegnet ' (apostrof) som første eller sidste tegn.

## IsTitle

Returnerer True (sand), hvis det første tegn i hvert ord er skrevet med Stort og alle andre tegn er små.

### Syntaks:

svc.IsTitle(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### 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 True (sand), hvis alle bogstaver i strengen er skrevet med Store bogstaver. Ikke-alfabetiske tegn ignoreres.

### Syntaks:

svc.IsUpper(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### Eksempel:

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

## IsUrl

Returnerer True (sand), hvis strengen er en gyldig absolut URL- (Uniform Resource Locator) -adresse. Kun protokollerne http, https og ftp understøttes.

### Syntaks:

svc.IsUrl(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### 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 True (sand), hvis alle tegn i strengen er blanktegn

### Syntaks:

svc.IsWhitespace(inputstr: str): bool

### Parametre:

inputstr: Den streng, der skal tjekkes. Hvis tom, returnerer metoden False (falsk).

### Eksempel:

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

## JustifyCenter

Returnerer input-strengen centreret.

De indledende og afsluttende hvide mellemrum fjernes og de resterende tegn udfyldes til venste og højre op til den angivne samlede length (længde) med padding polstringstegnet.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal centreres. Hvis tom, returnerer metoden en tom streng.

length (længde): Længden på den resulterende streng (standard =længden på input-strengen).

Hvis den angivne længde er kortere den centrerede input-streng, afkortes den returnerede streng.

padding (udfyldning): Det enkelttegn, der skal bruges som udfyldning (standard = ASCII-mellemrumstegn " ").

### 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 input-strengen venstrejustereret.

De indledende hvide mellemrum fjernes og de resterende tegn suppleres til højre med op til en angivet samlet length (længde) med padding polstringstegnet.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal venstrejusteres. Hvis tom, returnerer metoden en tom streng.

længde: Længden af den resulterende streng (standard= input-strengens længde).

Hvis den angivne længde er kortere end den venstrejusterede input-streng, afkortes den returnerede streng.

padding (udfyldning): Det enkelttegn, der skal bruges som udfyldning (standard = ASCII-mellemrumstegn " ").

### 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 input-strengen højrejusteret.

De indledende hvide mellemrum fjernes og de resterende tegn suppleres til venstre med op til en angivet samlet length (længde) med padding polstringstegnet.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal højrejusteres. Hvis tom, returnerer metoden en tom streng.

længde: Længden af den resulterende streng (standard= input-strengens længde).

Hvis den angivne længde er kortere end den højre-justerede streng, afkortes den returnerede streng.

padding (udfyldning): Det enkelttegn, der skal bruges som udfyldning (standard = ASCII-mellemrumstegn " ").

### 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 input-strengen omgivet af enkelte eller dobbelte anførselstegn. Eksisterende anførselstegn efterlades uændrede, herunder indledende og afsluttende anførselstegn.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal citeres.

anførselstegn: Enten enkelt (') eller dobbelt (") anførselstegn (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 metode kan være nyttig, når du forbereder et streng-felt, der skal gemmes i en CSV-lignende fil, hvilket kræver, at tekstværdierne er omgivet af enkelte eller dobbelte anførselstegn.

## ReplaceChar

Erstatter alle forekomster af de tegn, der er angivet i parameteren Before (før) med de tilsvarende tegn, der er angivet i After (efter).

Hvis længden af Before (før) er større end længden af After (efter) erstattes de resterende tegn i Before med det sidste tegn i After.

### Syntaks:

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

### Parametre:

inputstr: Den input-streng, som erstatninger sker på.

før: En streng med de tegn, der søges efter i input-strengen til erstatning,

efter: En med de nye tegn, der skal er dem, der er defineret i før.

### Eksempel:

        ' Erstatter tegn med accenter
        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"

Tjenesten SF_String leverer nyttige delte konstanter til de latinske tegnsæt, som vist i eksemplet herunder:

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

## ReplaceRegex

Erstatter alle forekomster af et givet regulært udtryk med en ny streng.

### Syntaks:

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

### Parametre:

inputstr: Den input-streng, hvor erstatninger skal ske.

regex: Det regulære udtryk.

nystr: Erstatningsstrengen.

Forskel på store og små bogstaver: Søgningen kan skelne mellem store og små bogstaver eller ikke (Standard = False (FALSK)).

### 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." (hvert lille bogstav er erstattet 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." (hvert ord er erstattet med "x")

## ReplaceStr

Erstatter nogle eller alle forekomster af et array af strenge i en streng med et array af nye strenge.

### Syntaks:

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

### Parametre:

inputstr: Den input-streng, hvor erstatninger skal ske.

oldstr: En enkelt streng eller et matrix af strenge . Tomme strenge, "", ignorereres.

newstr: Den erstattende streng eller en matrix af erstattende strenge.

If oldstrer en matrix, hver enkelt af et vilkårligt element i oldstr erstattes med newstr.

Hvis oldstr og newstr er matrixer, sker erstatninger en for en frem til UBound(newstr).

Hvis oldstr har flere elementer end newstr, erstattes de resterende elementer i oldstr af det sidste element i newstr.

occurrences: Det maksimale antal erstatninger. Standardværdien er 0, hvilket betyder at alle forekomster bliver erstattet.

Når oldstr er et array, beregnes parameteren occurrence (forekomst) enkeltvis for hvert element i arrayet.

Forskel på store og små bogstaver: Søgningen kan skelne mellem store og små bogstaver eller ikke (Standard = False (FALSK)).

### 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 en streng med en læselig repræsentation af argumentet, afkortet til en given længde. Detter er nyttigt, hovedsagelig til aflusnings- og logging-formål.

Hvis parameteren anyvalue (vilkårlig_værdi) er et objekt, bliver det omgivet med firkantede klammer "[" og "]".

I strenge erstattes tabulatorer og linjeskift med \t, \n eller \r.

Hvis den samlede længde overstiger parameteren maxlength (maksimal_længde), bliver den sidste del af strengen erstattet med " ... (N)", hvor N er den samlede længde af den originale streng før trunkering.

### Syntaks:

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

### Parametre:

vilkårlig_værdi: Den input-værdi, der skal repræsenteres. Det kan være enhver værdi, som en streng, en matrix, et Basic-objekt, et UNO-objekt og så videre.

maksimal_længde: Den største længde af den resulterende streng. Standardværdien er =, hvilket betyder, at er der ikke er nogen begrænsning af den resulterende repræsentation.

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

Bemærk, at repræsentationen af datatyper som Arrays og instanser af ScriptForge.Dictionary (.ordbog) omfatter både datatype og værdier:

        ' Et eksempel med en indbygget Basic-matrix
        MsgBox SF_String.Represent(Array(1, 2, "Text" & Chr(9) & "here"))
        ' "[ARRAY] (0:2) (1, 2, Text\there)"
        Et eksempel med et ScriptForge-matrix
        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)"
        ' Et eksempel med en ScriptForge-ordbog
        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 input-strengen i omvendt rækkefølge.

Denne metode ligner den indbyggede Basic-funktion StrReverse.

For at bruge funktionen StrReverse (omvend_streng), skal udtrykket Option VBASupport 1 findes i modulet.

### Syntaks:

svc.Reverse(inputstr: str): str

### Parametre:

inputstr: Den streng, der skal vendes.

### Eksempel:

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

## SplitLines

Returnerer en nul-baseret matrix af strenge med linjerne i input-strengen. Hvert element i matrixen er opnået ved at opdele inputstrengen ved linjeskift-tegn.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal deles.

keepbreaks (behold_skift): Når True (sand), bevares linjeskift i output-matrixen (standard = False (falsk)).

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

Opdeler en streng i en matrix af elementer med et angivet skilletegn.

Hvis en delstreng i anførselstegn indeholder et skilletegn, ignoreres det. Dette er nyttigt, når du parser CSV-lignende poster, der indeholder strenge i anførselstegn.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal deles.

delimiter (skilletegn): En streng af et eller flere tegn, der vil blive brugt som skilletegn. Standard-skilletegnet er ASCII-mellemrumstegnet " ".

occurrences: Det højeste antal delstrenge, der skal returneres. Standardværdien er 0, hvilket betyder, at der ikke er nogen grænse for antallet af returnerede strenge.

anførselstegn: Enten det enkelte (') eller det dobbelte (") anførselstegn.

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

Husk på forskellen mellem Basic og Python, når de repræsenterer strenge. I Basic fortolkes for eksempel to "" tegn inde i en streng som et enkelt " tegn. I Python kan strenge, der er omgivet med enkelte anførselstegn, indeholde "-tegn uden at det er nødvendigt at fordoble dem.

## StartsWith

Returnerer True (sand), hvis de første tegn i en streng er identiske med en given delstreng.

Denne metode returnerer False ()falsk, Hvis enten input-strengen eller delstrengen har længden = 0 eller når delstrengen er længere end input-strengen.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal testes.

delstreng: Den delstreng, der skal søges i begyndelsen af inputstr.

Forskel på store og små bogstaver: Søgningen kan skelne mellem store og små bogstaver eller ikke (Standard = False (FALSK)).

### Eksempel:

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

## TrimExt

Returnerer input-strengen uden dens indledende og afsluttende blanktegn.

### Syntaks:

svc.TrimExt(inputstr: str): str

### Parametre:

inputstr: Den streng, der skal trimmes.

### Eksempel:

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

## Unescape

Konverterer enhver escape-sekvens ((\\, \n, \r, \t) i inputstrengen til deres tilsvarende ASCII-tegn.

### Syntaks:

svc.Unescape(inputstr: str): str

### Parametre:

inputstr: Den streng, der skal konverteres.

### Eksempel:

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

## Unquote

Fjerner de enkelte eller dobbelte anførselstegn, der omgiver input-strengen.

Dette er nyttigt, når du parser CSV-lignende poster, der indeholder strenge i anførselstegn.

### Syntaks:

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

### Parametre:

inputstr: Den streng, hvor anførselstegnene skal fjernes.

anførselstegn: Enten enkelte (') eller dobbelte (") anførselstegn (standard).

### Eksempel:

        Dim s as String
        ' s = "Noget tekst" (uden omgivende anførselstegn)
        s = SF_String.Unquote("""Some text""")
        'Strengen herunder har ikke omgivende anførselstegn, derfor forbliver den uændret
        ' s = "Noget tekst" (uændret)
        s = SF_String.Unquote("Some text")
        ' Anførselstegn inde i strengen fjernes ikke
        ' s = "Den ""sande"" betydning" (uændret)
        s = SF_String.Unquote("The ""true"" meaning")

## Wrap

Konverterer input-strengen til en matrix af delstrenge, sådan at hvert element i matrixen højst har et givet antal tegn.

I praksis returnerer denne metode en nul-baseret matrix af output-linjer uden ny linje i slutningen, undtagen ved de allerede eksisterede linjeskift.

Tabulatorerne udvides med den samme procedure udført af metoden ExpandTabs (udvid faneblade).

Symbolske linjeskift bliver erstattede med deres tilsvarende ASCII-tegn.

Hvis det ombrudte output ikke har noget indhold, er den returnerede matrix tom.

### Syntaks:

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

### Parametre:

inputstr: Den streng, der skal ombrydes.

bredde: Det maksimale antal tegn i hver linje (standard= 70).

tabulatorafstand: Før teksten ombrydes, erstattes de eksisterende Tabulator- Chr(9) -tegn med mellemrum. Argumentet tabulatorafstand definerer Tabulatorstop på Tabulatorafstand+ 1, 2 * tTabulatorafstand + 1 , ... N * TabSize + 1 (Default = 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-rutiner eller identifikatorer, der indledes med et understregstegn "_" er reserveret til internt brug. Det er ikke meningen, at de skal bruges i Basic-makroer eller Python-scripts.

Relaterede emner

ScriptForge.Array-tjeneste

Streng-funktion

Støt os venligst!