ScriptForge.String service

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

Definities

Regeleinden

De service String herkent de volgende regeleinden:

Symbolische naam

ASCII-code

Line feed
Verticale tab
Carriage return
Line feed + Carriage return
Bestand scheidingsteken
Groep scheidingsteken
Record scheidingsteken
Volgende regel
Regel scheidingsteken
Paragraaf scheidingsteken

10
12
13
10 + 13
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


tip

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”.

Ook besturingstekens (ASCII-code <= 0x1F) worden als niet-afdrukbare tekens beschouwd.

Aanhalingstekens in tekenreeksen:

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

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)


tip

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


note

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.


warning

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)
  
tip

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
  
tip

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 é of een gelijkwaardige numerieke HTML-code.

Syntaxis:

svc.HtmlEncode(inputstr: str): str

Parameters:

inputstr: De te coderen tekenreeks.

Voorbeeld:


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

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
  
note

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:

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
  
note

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 is 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"'
  
tip

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.

note

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

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

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.


Help ons, alstublieft!