Inhoud

# ScriptForge.String service

De service String service heeft een aantal methoden voor het werken met tekenreeksen. Deze methoden kunnen gebruikt worden om:

- De inhoud van tekenreeksen te valideren

- De tekenreeks verbeteren door het verwijderen van spaties, het uitvullen of teruglopen van tekst

- Met reguliere expressies naar teksten zoeken en die vervangen

- Hash algoritmes toepassen, enz.

## Definities

### Regeleinden

De service String herkent de volgende regeleinden:

Symbolische naam | ASCII-code
--- | ---
Line feed Vertical tab Carriage return Carriage return + Line feed File separator Group separator Record separator Next line Line separator Paragraph separator | 10 12 13 13 + 10 28 29 30 133 8232 8233

### Witruimtes

De service String herkent de volgende witruimtes:

Symbolische naam | ASCII-code
--- | ---
Spatie Horizontale tab Line feed Verticale tab Form feed Carriage return Volgende regel Harde spatie Regel scheidingsteken Paragraaf scheidingsteken | 32 9 10 11 12 13 133 160 8232 8233

### Escape-reeksen

De volgende escape-reeksen kunnen in tekenreeksen worden gebruikt:

Escape-reeks | Symbolische naam | ASCII-code
--- | --- | ---
\n \r \t | Line feed Carriage return Horizontale tab | 10 13 9

Om de escape-reeks "\n" als deel van een tekenreeks te gebruiken, gebruik "\\n" en niet "\" & Chr(10).

### Niet-afdrukbare tekens:

Niet-afdrukbare tekens zijn bijvoorbeeld de in de Unicode Character Database gedefinieerde “Other” en “Separator”.

Controletekens (ASCII-code <= 0x1F) worden ook als niet-afdrukbaar beschouwd.

### Aanhalingstekens in tekenreeksen:

Om een aanhalingsteken in een tekenreeks te gebruiken, gebruik een \' (enkel aanhalingsteken) of \" (dubbel aanhalingsteken). Voorbeeld:

- De tekenreeks [str\'i\'ng] wordt geïnterpreteerd als [str'i'ng]

- De tekenreeks [str\"'i\"ng] wordt geïnterpreteerd als [str"i"ng]

## Service aanroep

Voordat de service ScriptForge.String gebruikt kan worden moet de ScriptForge bibliotheek worden geladen met:

##### In BASIC

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

Door het laden van de bibliotheek wordt een object SF_String aangemaakt dat gebruikt kan worden voor het aanroepen van de methoden van de service String.

De volgende stukjes code tonen manieren om de methoden in de service String aan te roepen (de methode Capitalize dient als voorbeeld):

        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

##### In Python

Het volgende stukje code toont aan hoe u in Python-scripts de methoden in de service String aan kunt roepen (de methode IsIPv4 dient als voorbeeld):

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

## Eigenschappen

Het object SF_String heeft de volgende eigenschappen:

Naam | AlleenLezen | Beschrijving
--- | --- | ---
sfCR | Ja | Carriage return: Chr(13)
sfCRLF | Ja | Carriage return + Linefeed: Chr(13) + Chr(10)
sfLF | Ja | Line feed: Chr(10)
sfNEWLINE | Ja | Carriage return + Line feed, kan zijn 1) Chr(13) Chr(10) of 2) Line feed: Chr(10) afhankelijk van het besturingssysteem.
sfTAB | Ja | Horizontale tabulatie: Chr(9)

U kunt deze eigenschappen gebruiken om de overeenkomende tekens te herkennen of te vervangen in tekenreeksen. Voorbeeld, de Line feed kan vervangen worden door SF_String.sfLF.

De lijst met methodes in de service 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

Het eerste argument van de meeste methoden is de tekenreeks. Deze wordt altijd bij referentie doorgegeven en wordt niet gewijzigd. Als de tekenreeks wordt gewijzigd dan wordt er een nieuwe tekenreeks geretourneerd, voorbeelden zijn de methoden Capitalize en Escape.

Omdat Python al een uitgebreide ondersteuning biedt voor het werken met tekenreeksen, zijn de meeste methoden in de service String alleen beschikbaar voor Basic-scripts. Voor beide beschikbaar zijn: HashStr, IsADate, IsEmail, IsFileName, IsIBAN, IsIPv4, IsLike, IsSheetName, IsUrl, SplitNotQuoted en Wrap.

## Capitalize

Maakt van elke eerste letter van elk woord in de tekenreeks een hoofdletter.

### Syntaxis:

svc.Capitalize(inputstr: str): str

### Parameters:

inputstr: De tekenreeks die gewijzigd moet worden.

### Voorbeeld:

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

## Count

Telt het aantal keren dat een deel van een tekenreeks of een reguliere expressie voorkomt in de tekenreeks.

### Syntaxis:

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

### Parameters:

inputstr: De tekenreeks waarin gezocht moet worden.

substring: De tekenreeks of reguliere expressie waarnaar gezocht moet worden

isregex: Gebruik True als de tekenreeks waarnaar gezocht moet worden een reguliere expressie is (Standaard = False)

Hoofdlettergevoelig : Het zoeken kan hoofdlettergevoelig zijn (standaardwaarde is False).

### Voorbeeld:

        'Telt het aantal keren dat "or" voorkomt in de tekenreeks (uitkomst 2)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "or", CaseSensitive := False)
        'Telt het aantal woorden met alleen kleine letters (uitkomst 7)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "\b[a-z]+\b", IsRegex := True, CaseSensitive := True)

Raadpleeg de Python documentatie voor meer informatie over reguliere expressies.

## EndsWith

Retourneert True als de tekenreeks eindigt met een bepaalde tekenreeks.

De functie retourneert False als een van beide tekenreeksen leeg is of wanneer ''substring'' langer is dan ''inputstr''.

### Syntaxis:

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

### Parameters:

inputstr: De te testen tekenreeks.

substring: De tekenreeks waarnaar gezocht moet worden, of die aan het einde van de inputstr staat.

Hoofdlettergevoelig : Het zoeken kan hoofdlettergevoelig zijn (standaardwaarde is False).

### Voorbeeld:

        'Retourneert True omdat de methode is aangeroepen met de standaardwaarde False voor de hoofdlettergevoeligheid
        MsgBox SF_String.EndsWith("abcdefg", "EFG")
        'Retourneert False vanwege de parameter voor de hoofdlettergevoeligheid
        MsgBox SF_String.EndsWith("abcdefg", "EFG", CaseSensitive := True)

## Escape

Converteert regeleinden en tabs in een invoertekenreeks naar de overeenkomende escape-reeks (\\, \n, \r, \t).

### Syntaxis:

svc.Escape(inputstr: str): str

### Parameters:

inputstr: De te wijzigen tekenreeks.

### Voorbeeld:

        'Retourneert de tekenreeks "abc\n\tdef\\n"
        MsgBox SF_String.Escape("abc" & Chr(10) & Chr(9) & "def\n")

## ExpandTabs

Vervangt de Tab-tekens Chr(9) door spaties om het gedrag van tab-stops te kopiëren.

Als er een regeleinde is gevonden, beginnen op een nieuwe regel en de teller resetten.

### Syntaxis:

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

### Parameters:

inputstr: De uit te breiden tekenreeks.

tabsize: Deze parameter wordt gebruikt om het aantal Tab-stops te bepalen met de formule: TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (Standaard = 8)

### Voorbeeld:

        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

Vervangt alle niet-afdrukbare tekens in de invoer door een bepaald teken.

### Syntaxis:

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

### Parameters:

inputstr: De te doorzoeken tekenreeks.

replacedby: Nul, een of meer tekens die alle niet-afdrukbare tekens gaan vervangen in de inputstr (Standaard = "")

### Voorbeeld:

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

## FindRegex

Vindt in een tekenreeks een tekenreeks die overeenkomt met een bepaalde reguliere expressie.

### Syntaxis:

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

### Parameters:

inputstr: De te doorzoeken tekenreeks

regex: De reguliere expressie

start: De positie in de tekenreeks waar het zoeken moet beginnen. Deze parameter wordt bij referentie doorgegeven, na uitvoering bevat start de positie van het eerste teken van de gevonden tekenreeks. Indien er geen tekenreeks gevonden wordt, is de waarde van start na uitvoering 0.

Hoofdlettergevoelig : Het zoeken kan hoofdlettergevoelig zijn. (standaardwaarde is False).

forward: Geeft de richting van het zoeken aan. True betekent dat van voren naar achteren wordt gezocht. False betekent dat van achteren naar voren wordt gezocht (Standaard is True)

Bij de eerste keer uitvoering, als forward = True, dan zou start 1 moeten zijn, als forward = False dan zou start gelijk moeten zijn aan Len(inputstr)

### Voorbeeld:

        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

In bovenstaand voorbeeld, de nieuwe waarde van lStart kan worden gebruikt om verder te zoeken op dezelfde tekenreeks in dezelfde tekenreeks door de waarde van Start parameter te verhogen met Len(result). Dit om geen overlappende tekenreeks te vinden.

## HashStr

Hash-functies worden gebruikt in sommige cryptografische algoritmen, in digitale handtekeningen, berichtauthenticatiecodes, manipulatiedetectie, vingerafdrukken, checksums (berichtintegriteitscontrole), hashtabellen, wachtwoordopslag en nog veel meer.

De methode HashStr retourneert het resultaat van een hash-functie die is toegepast op een gegeven tekenreeks en met een gespecificeerd algoritme, als een tekenreeks van kleine hexadecimale cijfers.

De ondersteunde hash-algoritmen zijn: MD5, SHA1, SHA224, SHA256, SHA384 en SHA512.

### Syntaxis:

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

### Parameters:

inputstr: De tekenreeks om te hashen. Het wordt verondersteld te zijn gecodeerd in UTF-8. Het hash-algoritme beschouwt de tekenreeks als een stroom van bytes.

algorithm: Een van de hierboven vermelde ondersteunde algoritmen, doorgegeven als een tekenreeks.

### Voorbeeld:

##### In BASIC

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

##### In Python

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

## HtmlEncode

Codeert de invoerreeks in de HTML-tekencodes, waarbij speciale tekens worden vervangen door hun &-tegenhangers.

Het teken é zou bijvoorbeeld worden vervangen door &eacute; of een gelijkwaardige numerieke HTML-code.

### Syntaxis:

svc.HtmlEncode(inputstr: str): str

### Parameters:

inputstr: De te coderen tekenreeks.

### Voorbeeld:

        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

Retourneert True als de invoertekenreeks een geldige datum is volgens een opgegeven datumnotatie.

### Syntaxis:

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

### Parameters:

inputstr: De tekenreeks die moet worden gecontroleerd. Indien leeg, retourneert de methode False

dateformat: De datumnotatie, als tekenreeks. Dit kan "YYYY-MM-DD" (standaard), "DD-MM-YYYY" of "MM-DD-YYYY" zijn

Het streepje (-) mag worden vervangen door een punt (.), een schuine streep (/) of een spatie.

Als het opmaak ongeldig is, retourneert de methode False.

### Voorbeeld:

##### In BASIC

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

Deze methode controleert het formaat van de invoertekenreeks zonder kalenderspecifieke controles uit te voeren. Daarom test het de invoerreeks niet voor schrikkeljaren of maanden met 30 of 31 dagen. Raadpleeg daarvoor de ingebouwde functie IsDate.

Het onderstaande voorbeeld toont het verschil tussen de methoden IsADate (ScriptForge) en de functie IsDate (ingebouwd).

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

##### In Python

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

## IsAlpha

Retourneert True als alle tekens in de tekenreeks alfabetisch zijn.

Alfabetische tekens zijn de tekens die zijn gedefinieerd in de Unicode Character Database als Letter.

### Syntaxis:

svc.IsAlpha(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

## IsAlphaNum

Retourneert True als alle tekens in de tekenreeks alfabetisch zijn, cijfers of "_" (underscore). Het eerste teken mag geen cijfer zijn.

### Syntaxis:

svc.IsAlphaNum(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

## IsAscii

Retourneert True als alle tekens in de tekenreeks ASCII-tekens zijn.

### Syntaxis:

svc.IsAscii(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

## IsDigit

Retourneert True als alle tekens in de tekenreeks cijfers zijn.

### Syntaxis:

svc.IsDigit(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

## IsEmail

Retourneert True als de tekenreeks een geldig e-mailadres is.

### Syntaxis:

svc.IsEmail(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

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

Retourneert True als de tekenreeks een geldige bestandsnaam is in een bepaald besturingssysteem.

### Syntaxis:

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

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

osname: De naam van het besturingssysteem, als een tekenreeks. Dit kan "WINDOWS", "LINUX", "MACOSX" of "SOLARIS" zijn.

De standaardwaarde is het huidige besturingssysteem waarop het script wordt uitgevoerd.

### Voorbeeld:

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

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

Retourneert True als alle tekens in de tekenreeks hexadecimale cijfers zijn.

### Syntaxis:

svc.IsHexDigit(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

De hexadecimale cijfers kunnen worden voorafgegaan door "0x" of "&H".

### Voorbeeld:

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

## IsIBAN

Retourneert True als de tekenreeks een geldig internationaal bankrekeningnummer (IBAN) is. De vergelijking is niet hoofdlettergevoelig.

### Syntaxis:

svc.IsIBAN(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Geretourneerde waarde:

True als de tekenreeks een geldig IBAN-nummer bevat.

### Voorbeeld:

        ' 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

Retourneert True als de tekenreeks een geldig IP(v4)-adres is.

### Syntaxis:

svc.IsIPv4(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

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

Retourneert True als de hele invoertekenreeks overeenkomt met een bepaald patroon dat jokertekens bevat.

### Syntaxis:

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

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

pattern: Het patroon als een tekenreeks. Jokertekens zijn:

- "?" staat voor één willekeurig teken

- "*" staat voor geen, één of meer tekens

Hoofdlettergevoelig : Het zoeken kan hoofdlettergevoelig zijn. (standaardwaarde is False).

### Voorbeeld:

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

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

Retourneert True als alle alfabetische tekens in de tekenreeks kleine letters zijn.

### Syntaxis:

svc.IsLower(inputstr: str): bool

### Parameters:

InputStr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

## IsPrintable

Retourneert True als alle tekens in de tekenreeks afdrukbaar zijn.

### Syntaxis:

svc.IsPrintable(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

## IsRegex

Retourneert True als de hele invoertekenreeks overeenkomt met een bepaalde reguliere expressie.

### Syntaxis:

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

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

regex: De reguliere expressie. Indien leeg, retourneert de methode False.

Hoofdlettergevoelig : Het zoeken kan hoofdlettergevoelig zijn. (standaardwaarde is False).

### Voorbeeld:

            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

Retourneert True als de invoertekenreeks een geldige Calc-bladnaam is.

### Syntaxis:

svc.IsSheetName(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

##### In BASIC

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

##### In Python

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

Een bladnaam mag de tekens [ ] * ? : / \ of het teken ' (apostrof) als eerste of laatste teken.

## IsTitle

Retourneert True als het eerste teken van elk woord in hoofdletters is en de andere tekens in kleine letters.

### Syntaxis:

svc.IsTitle(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

        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

Retourneert True als alle tekens in de tekenreeks in hoofdletters zijn. Niet-alfabetische tekens worden genegeerd.

### Syntaxis:

svc.IsUpper(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

## IsUrl

Retourneert True als de tekenreeks een geldig absoluut URL-adres (Uniform Resource Locator) is. Alleen de protocollen http, https en ftp worden ondersteund.

### Syntaxis:

svc.IsUrl(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

##### In BASIC

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

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

Retourneert True als alle tekens in de tekenreeks spaties zijn.

### Syntaxis:

svc.IsWhitespace(inputstr: str): bool

### Parameters:

inputstr: De te controleren tekenreeks. Indien leeg, de methode retourneert False.

### Voorbeeld:

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

## JustifyCenter

Retourneert de invoertekenreeks gecentreerd uitgevuld.

De voorloop- en volgspaties worden verwijderd en de overige tekens worden links en rechts aangevuld tot een opgegeven totale length met het teken padding.

### Syntaxis:

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

### Parameters:

inputstr: De tekenreeks die in het midden moet worden uitgelijnd. Indien leeg, retourneert de methode een lege tekenreeks.

length: De lengte van de resulterende tekenreeks (standaard is de lengte van de invoertekenreeks).

Als de opgegeven lengte korter is dan de in het midden uitgevulde invoertekenreeks, wordt de geretourneerde tekenreeks afgekapt.

padding: het enkele teken dat als opvulling moet worden gebruikt (standaard = de ASCII-spatie " ").

### Voorbeeld:

        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

Retourneert de invoerreeks links uitgelijnd.

De voorste spaties worden verwijderd en de overige tekens worden rechts aangevuld tot een opgegeven totale length met het teken padding.

### Syntaxis:

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

### Parameters:

inputstr: De tekenreeks die links moet worden uitgelijnd. Indien leeg, retourneert de methode een lege tekenreeks.

length: De lengte van de resulterende tekenreeks (standaard = de lengte van de invoertekenreeks).

Als de opgegeven lengte korter is dan de links uitgelijnde invoertekenreeks, wordt de geretourneerde tekenreeks afgekapt.

padding: Het enkele teken dat als opvulling moet worden gebruikt (standaard = de ASCII-spatie " ").

### Voorbeeld:

        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

Retourneert de invoerreeks rechts uitgelijnd.

De voorste spaties worden verwijderd en de overige tekens worden aan de linkerkant aangevuld tot een opgegeven totale length met het teken padding.

### Syntaxis:

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

### Parameters:

inputstr: De tekenreeks die rechts moet worden uitgelijnd. Indien leeg, retourneert de methode een lege tekenreeks.

length: De lengte van de resulterende tekenreeks (standaard = de lengte van de invoertekenreeks).

Als de opgegeven lengte korter is dan de rechts uitgelijnde invoertekenreeks, wordt de geretourneerde tekenreeks afgekapt.

padding: Het enkele teken dat als opvulling moet worden gebruikt (standaard = de ASCII-spatie " ").

### Voorbeeld:

        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

Retourneert de invoertekenreeks tussen enkele of dubbele aanhalingstekens. Bestaande aanhalingstekens blijven ongewijzigd, inclusief aanhalingstekens vooraan en/of achteraan.

### Syntaxis:

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

### Parameters:

inputstr: De te behandelen tekenreeks.

quotechar: Ofwel het enkele (') of dubbele (") aanhalingsteken (standaard).

### Voorbeeld:

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

Deze methode kan handig zijn bij het voorbereiden van een tekenreeksveld dat moet worden opgeslagen in een csv-achtig bestand, waarvoor tekstwaarden moeten worden ingesloten tussen enkele of dubbele aanhalingstekens.

## ReplaceChar

Vervangt alle tekens die zijn opgegeven in de parameter Before door de overeenkomstige tekens die zijn opgegeven in After.

Als de lengte van Before groter is dan de lengte van After, worden de resterende tekens in Before vervangen door het laatste teken in After.

### Syntaxis:

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

### Parameters:

inputstr: De invoertekenreeks waarop vervangingen zullen plaatsvinden.

before: Een tekenreeks met de tekens die in de invoertekenreeks worden gezocht voor vervanging.

after: Een tekenreeks met de nieuwe tekens die de tekens vervangen die zijn gedefinieerd in before.

### Voorbeeld:

        ' Vervangt tekens met accenten
        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"

De service SF_String biedt nuttige openbare constanten voor de Latijnse tekensets, zoals in het onderstaande voorbeeld:

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

## ReplaceRegex

Vervangt alle exemplaren van een bepaalde reguliere expressie door een nieuwe tekenreeks.

### Syntaxis:

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

### Parameters:

inputstr: De invoertekenreeks waarop vervangingen plaatsvinden.

regex: De reguliere expressie.

newstr: De vervangende tekenreeks.

Hoofdlettergevoelig : Het zoeken kan hoofdlettergevoelig zijn. (standaardwaarde is False).

### Voorbeeld:

        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." (elke kleine letter wordt vervangen door "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." (elke woord wordt vervangen door "x")

## ReplaceStr

Vervangt in een tekenreeks enkele of alle exemplaren van een matrix tekenreeksen door een reeks nieuwe tekenreeksen.

### Syntaxis:

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

### Parameters:

inputstr: De invoerreeks waarop vervangingen zullen plaatsvinden.

oldstr: Een enkele tekenreeks of een matrix met tekenreeksen. Tekenreeksen met een lengte van nul worden genegeerd.

newstr: De vervangende tekenreeks of de matrix met vervangende tekenreeksen.

Als oldstr een matrix is, wordt elk voorkomen van een van de items in oldstr vervangen door newstr.

Als oldstr en newstr matrixen zijn, vinden vervangingen één voor één plaats tot aan de UBound(newstr).

Als oldstr meer items heeft dan newstr, dan worden de resterende elementen in oldstr vervangen door het laatste element in newstr .

occurrences:Het maximale aantal vervangingen. De standaardwaarde is 0, wat betekent dat alle exemplaren worden vervangen.

Als oldstr een matrix is, wordt de parameter occurrence afzonderlijk berekend voor elk item in de matrix.

Hoofdlettergevoelig : Het zoeken kan hoofdlettergevoelig zijn. (standaardwaarde is False).

### Voorbeeld:

        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

Retourneert een tekenreeks met een leesbare representatie van het argument, afgekapt op een bepaalde lengte. Dit is vooral handig voor het opsporen van fouten of loggen.

Als de parameter anyvalue een object is, wordt deze tussen vierkante haken "[" en "]" geplaatst.

In tekenreeksen worden tabs en regeleinden vervangen door \t, \n of \r.

Als de uiteindelijke lengte de parameter maxlength overschrijdt, wordt het laatste deel van de tekenreeks vervangen door " ... (N)", waarbij N de totale lengte is van de oorspronkelijke tekenreeks vóór afkappen.

### Syntaxis:

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

### Parameters:

anyvalue: De invoerwaarde die moet worden weergegeven. Het kan elke waarde zijn, zoals een tekenreeks, een matrix, een Basic-object, een UNO-object, enz.

maxlength: De maximale lengte van de resulterende tekenreeks. De standaardwaarde is 0, wat betekent dat er geen limiet is aan de lengte van de resulterende weergave.

### Voorbeeld:

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

Merk op dat de weergave van gegevenstypen zoals matrixen en ScriptForge.Dictionary-objectinstanties, zowel het gegevenstype als hun waarden omvat:

        ' Een voorbeeld met een Basic ingebouwde matrix
        MsgBox SF_String.Represent(Array(1, 2, "Text" & Chr(9) & "here"))
        ' "[ARRAY] (0:2) (1, 2, Text\there)"
        ' Een voorbeeld met een 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)"
        ' Een voorbeeld met een ScriptForge woordenboek
        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

Retourneert de invoertekenreeks in omgekeerde volgorde.

Deze methode is gelijk aan de ingebouwde Basic-functie StrReverse.

Om de functie StrReverse te gebruiken, moet de instructie Optie VBASupport 1 aanwezig zijn in de module.

### Syntaxis:

svc.Reverse(inputstr: str): str

### Parameters:

inputstr: De om te keren tekenreeks.

### Voorbeeld:

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

## SplitLines

Retourneert een op nul gebaseerde matrix van tekenreeksen met de regels in de invoertekenreeks. Elk item in de matrix wordt verkregen door de invoertekenreeks te splitsen bij nieuwe regeltekens.

### Syntaxis:

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

### Parameters:

inputstr: De te splitsen tekenreeks.

keepbreaks: Indien True, worden regeleinden behouden in de uitvoermatrix (standaard = False).

### Voorbeeld:

        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

Splitst een tekenreeks in een matrix van elementen met een opgegeven scheidingsteken.

Als een subtekenreeks tussen aanhalingstekens een scheidingsteken bevat, wordt dit genegeerd. Dit is handig bij het ontleden van CSV-achtige records die tekenreeksen tussen aanhalingstekens bevatten.

### Syntaxis:

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

### Parameters:

inputstr: De te splitsen tekenreeks.

delimiter: Een tekenreeks van een of meer tekens die als scheidingsteken wordt gebruikt. Het standaardscheidingsteken is het ASCII-spatieteken " ".

occurrences: Het maximum aantal subtekenreeksen dat moet worden geretourneerd. De standaardwaarde is 0, wat betekent dat er geen limiet is voor het aantal geretourneerde tekenreeksen.

quotechar: Ofwel het enkele (') of dubbele (") aanhalingsteken.

### Voorbeeld:

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

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

Let op de verschillen tussen Basic en Python bij het weergeven van tekenreeksen. In Basic worden bijvoorbeeld twee ""-tekens in een tekenreeks geïnterpreteerd als een enkel "-teken. In Python kunnen tekenreeksen tussen enkele aanhalingstekens "-tekens bevatten zonder ze te verdubbelen.

## StartsWith

Retourneert True als de eerste tekens van een tekenreeks identiek zijn aan een bepaalde subtekenreeks.

Deze methode retourneert False als ofwel de invoertekenreeks of de subtekenreeks een lengte = 0 heeft of wanneer de subtekenreeks langer is dan de invoertekenreeks.

### Syntaxis:

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

### Parameters:

inputstr: De te testen tekenreeks.

substring: De subtekenreeks die moet worden doorzocht aan het begin van inputstr.

Hoofdlettergevoelig : Het zoeken kan hoofdlettergevoelig zijn. (standaardwaarde is False).

### Voorbeeld:

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

## TrimExt

Retourneert de invoertekenreeks zonder de voorloop- en volgspaties.

### Syntaxis:

svc.TrimExt(inputstr: str): str

### Parameters:

inputstr: De in te korten tekenreeks.

### Voorbeeld:

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

## Unescape

Converteert elke escape-reeks (\\, \n, \r, \t) in de invoerreeks naar het bijbehorende ASCII-teken.

### Syntaxis:

svc.Unescape(inputstr: str): str

### Parameters:

inputstr: De te converteren tekenreeks.

### Voorbeeld:

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

## Unquote

Verwijdert de enkele of dubbele aanhalingstekens die de invoertekenreeks omsluiten.

Dit is handig bij het ontleden van CSV-achtige records die tekenreeksen tussen aanhalingstekens bevatten.

### Syntaxis:

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

### Parameters:

inputstr: De tekenreeks waarvan de aanhalingstekens moeten worden verwijderd.

quotechar: Ofwel het enkele (') of dubbele (") aanhalingsteken (standaard).

### Voorbeeld:

        Dim s as String
        ' s = "Wat tekst" (zonder aanhalingstekens)
        s = SF_String.Unquote("""Some text""")
        ' Onderstaande tekenreeks heeft geen aanhalingstekens, dus deze blijft ongewijzigd
        's = "Wat tekst" (ongewijzigd)
        s = SF_String.Unquote("Some text")
        ' Aanhalingstekens binnen de tekenreeks worden niet verwijderd
        ' s = "The ""true"" meaning" (ongewijzigd)
        s = SF_String.Unquote("The ""true"" meaning")

## Wrap

Converteert de invoertekenreeks naar een matrix met subtekenreeksen, zodat elk item in de matrix maximaal een bepaald aantal tekens heeft.

In de praktijk retourneert deze methode een op nul gebaseerde matrix van uitvoerregels, zonder nieuwe regels aan het einde, behalve de reeds bestaande regeleinden.

Tabbladen worden uitgevouwen met dezelfde procedure die wordt uitgevoerd door de methode ExpandTabs.

Symbolische regeleinden worden vervangen door hun equivalente ASCII-tekens.

Als de verpakte uitvoer geen inhoud heeft, is de geretourneerde matrix leeg.

### Syntaxis:

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

### Parameters:

inputstr: De in te pakken tekenreeks.

width: Het maximum aantal tekens in elke regel (standaard is 70).

tabsize: Voordat de tekst ingepakt wordt, worden de bestaande TAB-tekens Chr(9) vervangen door spaties. Het argument tabsize definieert de TAB-stops bij TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (standaard is 8).

### Voorbeeld:

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

##### In 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-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.

Verwante onderwerpen

ScriptForge.Array service

Functie String