Usługa ScriptForge.String

Usługa String udostępnia zbiór metod przetwarzania ciągów. Metody te można wykorzystać do:

Definicje

Podziały wierszy

Usługa String rozpoznaje następujące podziały wierszy:

Nazwa symboliczna

Numer ASCII

Przesunięcie wiersza
Tabulator pionowy
Powrót karetki
Powrót karetki + przesunięcie wiersza
Separator pliku
Separator grupy
Separator rekordów
Następny wiersz
Separator wiersza
Separator akapitu

10
12
13
13 + 10
28
29
30
133
8232
8233


Białe znaki

Usługa String rozpoznaje następujące białe znaki:

Nazwa symboliczna

Numer ASCII

Spacja
Tabulator poziomy
Przesunięcie wiersza
Tabulator pionowy
Wysunięcie formularza
Powrót karetki
Następny wiersz
Spacja nierozdzielająca
Separator wiersza
Separator akapitu

32
9
10
11
12
13
133
160
8232
8233


Sekwencje ucieczki

Poniżej znajduje się lista sekwencji ucieczki, które można zastosować w ciągach znaków.

Sekwencja ucieczki

Nazwa symboliczna

Numer ASCII

\n
\r
\t

Przesunięcie wiersza
Powrót karetki
Tabulator poziomy

10
13
9


tip

Aby sekwencja ucieczki "\n" była interpretowana jako rzeczywisty ciąg znaków, po prostu użyj "\\n" zamiast "\" & Chr(10).


Znaki niedrukowalne:

Znaki zdefiniowane w bazie danych znaków Unicode jako „Inne” lub „Separator” są uważane za znaki niedrukowalne.

Znaki sterujące (kod ASCII <= 0x1F) są również uważane za niedrukowalne.

Cudzysłowy wewnątrz ciągów:

Aby dodać cudzysłowy w łańcuchach, użyj \' (pojedynczy cudzysłów) lub \" (podwójny cudzysłów). Na przykład:

Wywoływanie usługi

Przed użyciem usługi ScriptForge.String należy załadować bibliotekę ScriptForge za pomocą:

W języku Basic

      GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
  

Załadowanie biblioteki spowoduje utworzenie obiektu SF_String, którego można użyć do wywołania metod w usłudze String.

Poniższe fragmenty kodu przedstawiają trzy sposoby wywoływania metod z usługi String (jako przykład użyto metody Capitalize):


    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
  
W języku Python

Poniższy fragment kodu ilustruje sposób wywoływania metod z usługi String w skryptach Pythona. Jako przykład użyto metody IsIPv4.


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

Właściwości

Obiekt SF_String udostępnia następujące właściwości skryptów Basic:

Nazwa

Tylko do odczytu

Opis

sfCR

Tak

Powrót karetki: Chr(13)

sfCRLF

Tak

Powrót karetki + przesunięcie wiersza: Chr(13) & Chr(10)

sfLF

Tak

Przesunięcie wiersza: Chr(10)

sfNEWLINE

Tak

Powrót karetki + wysunięcie wiersza, który może wynosić
1) Chr(13) & Chr(10) lub
2) Wysunięcie wiersza: Chr(10)
w zależności od systemu operacyjnego.

sfTAB

Tak

Tabulator poziomy: Chr(9)


tip

Możesz użyć powyższych właściwości, aby zidentyfikować lub wstawić odpowiednie znaki wewnątrz ciągów. Na przykład przesunięcie wiersza można zastąpić przez SF_String.sfLF.


Lista metod w usłudze 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

Pierwszym argumentem większości metod jest ciąg znaków, który należy wziąć pod uwagę. Jest on zawsze przekazywany przez odniesienie i pozostawiany bez zmian. Metody takie jak Capitalize, Escape itp. po wykonaniu zwracają nowy ciąg.


warning

Ponieważ Python ma kompleksową wbudowaną obsługę ciągów znaków, większość metod usługi String jest dostępna tylko dla skryptów Basic. Metody dostępne dla języka Basic i Python to: HashStr, IsADate, IsEmail, IsFileName, IsIBAN, IsIPv4, IsLike, IsSheetName, IsUrl, SplitNotQuoted i Wrap.


Capitalize

Zamienia na wielką literę pierwszy znak każdego słowa w ciągu wejściowym.

Składnia:

svc.Capitalize(inputstr: str): str

Parametry:

inputstr: ciąg, który ma być pisany wielką literą.

Przykład:


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

Count

Zlicza liczbę wystąpień podciągu lub wyrażenia regularnego w ciągu.

Składnia:

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

Parametry:

inputstr: ciąg wejściowy, który ma zostać sprawdzony

substring: podciąg lub wyrażenie regularne, które ma być użyte podczas wyszukiwania

isregex: użyj True, jeśli podciąg jest wyrażeniem regularnym (domyślnie = False)

casesensitive: podczas wyszukiwania może być uwzględniana wielkość liter lub nie (domyślnie = False).

Przykład:


    ' Zlicza wystąpienia podciągu "or" w ciągu wejściowym (zwraca 2)
    MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "or", CaseSensitive := False)
    ' Zlicza słowa zawierające tylko małe litery (zwraca 7)
    MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "\b[a-z]+\b", IsRegex := True, CaseSensitive := True)
  
tip

Aby dowiedzieć się więcej o wyrażeniach regularnych, zapoznaj się z dokumentacją Pythona dotyczącą Regular Expression Operations.


EndsWith

Zwraca True, jeśli ciąg kończy się określonym podciągiem.

Funkcja zwraca False, gdy ciąg lub podciąg ma długość = 0 lub gdy podciąg jest dłuższy niż ciąg.

Składnia:

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

Parametry:

inputstr: ciąg do przetestowania.

substring: podciąg do przeszukania na końcu inputstr.

casesensitive: podczas wyszukiwania może być uwzględniana wielkość liter lub nie (domyślnie = False).

Przykład:


    ' Zwraca True, ponieważ metoda została wywołana z domyślną wartością CaseSensitive = False
    MsgBox SF_String.EndsWith("abcdefg", "EFG")
    ' Zwraca wartość False ze względu na parametr CaseSensitive
    MsgBox SF_String.EndsWith("abcdefg", "EFG", CaseSensitive := True)
  

Escape

Konwertuje podziały wierszy i tabulatory zawarte w ciągu wejściowym na ich równoważną sekwencję ucieczki (\\, \n, \r, \t).

Składnia:

svc.Escape(inputstr: str): str

Parametry:

inputstr: ciąg do przekonwertowania.

Przykład:


    ' Zwraca ciąg "abc\n\tdef\\n"
    MsgBox SF_String.Escape("abc" & Chr(10) & Chr(9) & "def\n")
  

ExpandTabs

Zastępuje znaki tabulacji Chr(9) spacjami, aby odtworzyć zachowanie tabulatorów.

Jeśli zostanie znaleziony podział wiersza, rozpoczynany jest nowy wiersz, a licznik znaków jest resetowany.

Składnia:

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

Parametry:

inputstr: ciąg, który ma zostać rozwinięty

tabsize: ten parametr służy do określenia tabulatorów za pomocą wzoru: TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (domyślnie = 8)

Przykład:


    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

Zastępuje wszystkie niedrukowalne znaki w ciągu wejściowym danym znakiem.

Składnia:

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

Parametry:

inputstr: ciąg, który ma zostać przeszukany

replacedby: zero, jeden lub więcej znaków, które zastąpią wszystkie niedrukowalne znaki w inputstr (domyślnie = "")

Przykład:


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

FindRegex

Znajduje w ciągu podciąg pasujący do danego wyrażenia regularnego.

Składnia:

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

Parametry:

inputstr: ciąg, który ma zostać przeszukany

regex: wyrażenie regularne

start: pozycja w ciągu, od której rozpocznie się wyszukiwanie. Parametr ten przekazywany jest przez odwołanie, zatem po wykonaniu wartość start będzie wskazywała pierwszy znak znalezionego podciągu. Jeśli nie zostanie znaleziony pasujący podciąg, start zostanie ustawione na 0.

casesensitive: podczas wyszukiwania może być uwzględniana wielkość liter lub nie (domyślnie = False).

forward: określa kierunek poszukiwań. Jeśli True, wyszukiwanie będzie kontynuowane. Jeśli False wyszukiwanie zostanie cofnięte (domyślnie = True)

W pierwszej iteracji, jeśli forward = True, to start powinno być równe 1, natomiast jeśli forward = False to start powinno być równe Len(inputstr)

Przykład:


    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

W powyższym przykładzie nowej wartości lStart można użyć do dalszego wyszukiwania tego samego ciągu wejściowego, ustawiając parametr Start na lStart + Len(result) w następnej iteracji.


HashStr

Funkcje skrótu są wykorzystywane w niektórych algorytmach kryptograficznych, w podpisach cyfrowych, kodach uwierzytelniających wiadomości, wykrywaniu manipulacji, odciskach palców, sumach kontrolnych (sprawdzanie integralności wiadomości), tabelach skrótów, przechowywaniu haseł i wielu innych.

Metoda HashStr zwraca wynik funkcji skrótu zastosowanej do danego ciągu i przy użyciu określonego algorytmu pod postacią ciągu małych cyfr szesnastkowych.

Obsługiwane algorytmy mieszające to: MD5, SHA1, SHA224, SHA256, SHA384 i SHA512.

Składnia:

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

Parametry:

inputstr: ciąg znaków do zaszyfrowania. Zakłada się, że jest zakodowany w UTF-8. Algorytm mieszający potraktuje ciąg jako strumień bajtów.

algorithm: jeden z obsługiwanych algorytmów wymienionych powyżej, przekazywany jako ciąg znaków.

Przykład:

W języku Basic

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

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

HtmlEncode

Koduje ciąg wejściowy w kodach znaków HTML, zastępując znaki specjalne ich odpowiednikami &.

Na przykład znak é zostanie zastąpiony przez &eacute; lub równoważny numeryczny kod HTML.

Składnia:

svc.HtmlEncode(inputstr: str): str

Parametry:

inputstr: ciąg do zakodowania.

Przykład:


    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

Zwraca wartość True, jeśli ciąg wejściowy jest prawidłową datą zgodnie z określonym formatem daty.

Składnia:

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

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False

dateformat: format daty jako ciąg. Może to być "YYYY-MM-DD" (domyślnie), "DD-MM-YYYY" lub "MM-DD-YYYY"

Dywiz (-) można zastąpić kropką (.), ukośnikiem (/) lub spacją.

Jeśli format jest nieprawidłowy, metoda zwraca False.

Przykład:

W języku Basic

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

Ta metoda sprawdza format ciągu wejściowego bez przeprowadzania kontroli specyficznych dla kalendarza. Dlatego nie testuje ciągu wejściowego dla lat lub miesięcy przestępnych mających 30 lub 31 dni. W tym celu skorzystaj z wbudowanej funkcji IsDate.


Poniższy przykład pokazuje różnicę pomiędzy metodami IsADate (ScriptForge) a funkcją IsDate (wbudowaną).


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

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

IsAlpha

Zwraca True, jeśli wszystkie znaki w ciągu są alfabetyczne.

Znaki alfabetyczne to znaki zdefiniowane w Unicode Character Database jako Letter.

Składnia:

svc.IsAlpha(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


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

IsAlphaNum

Zwraca wartość True, jeśli wszystkie znaki w ciągu są literami, cyframi lub "_" (podkreśleniem). Pierwszy znak nie może być cyfrą.

Składnia:

svc.IsAlphaNum(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


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

IsAscii

Zwraca True, jeśli wszystkie znaki w ciągu są znakami ASCII.

Składnia:

svc.IsAscii(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


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

IsDigit

Zwraca wartość True, jeśli wszystkie znaki w ciągu są cyframi.

Składnia:

svc.IsDigit(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


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

IsEmail

Zwraca wartość True, jeśli ciąg znaków jest prawidłowym adresem e-mail.

Składnia:

svc.IsEmail(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:

W języku 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
  
W języku 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

Zwraca True, jeśli ciąg znaków jest prawidłową nazwą pliku w danym systemie operacyjnym.

Składnia:

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

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

osname: nazwa systemu operacyjnego jako ciąg. Może to być "WINDOWS", "LINUX", "MACOSX" lub "SOLARIS".

Wartość domyślna to bieżący system operacyjny, w którym działa skrypt.

Przykład:

W języku 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
  
W języku 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

Zwraca True, jeśli wszystkie znaki w ciągu są cyframi szesnastkowymi.

Składnia:

svc.IsHexDigit(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Cyfry szesnastkowe mogą być poprzedzone "0x" lub "&H".

Przykład:


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

IsIBAN

Zwraca wartość True, jeśli ciąg znaków jest prawidłowym międzynarodowym numerem konta bankowego (IBAN). W porównaniu nie jest rozróżniana wielkość liter.

Składnia:

svc.IsIBAN(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Zwracana wartość:

True, jeśli ciąg zawiera prawidłowy numer IBAN.

Przykład:


    ' 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

Zwraca wartość True, jeśli ciąg znaków jest prawidłowym adresem IP(v4).

Składnia:

svc.IsIPv4(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:

W języku 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
  
W języku 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

Zwraca wartość True, jeśli cały ciąg wejściowy pasuje do danego wzorca zawierającego symbole wieloznaczne.

Składnia:

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

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

pattern: wzór jako ciąg. Symbole wieloznaczne to:

casesensitive: podczas wyszukiwania może być uwzględniana wielkość liter lub nie (domyślnie = False).

Przykład:

W języku 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
  
W języku 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

Zwraca True, jeśli wszystkie znaki w ciągu są małymi literami. Znaki inne niż alfabetyczne są ignorowane.

Składnia:

svc.IsLower(inputstr: str): bool

Parametry:

InputStr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


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

IsPrintable

Zwraca True, jeśli wszystkie znaki w ciągu nadają się do wydrukowania.

Składnia:

svc.IsPrintable(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


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

IsRegex

Zwraca wartość True, jeśli cały ciąg wejściowy pasuje do danego wyrażenia regularnego.

Składnia:

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

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

regex: wyrażenie regularne. Jeśli jest pusty, metoda zwraca False.

casesensitive: podczas wyszukiwania może być uwzględniana wielkość liter lub nie (domyślnie = False).

Przykład:


        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

Zwraca True, jeśli ciąg wejściowy jest prawidłową nazwą arkusza Calc.

Składnia:

svc.IsSheetName(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:

W języku Basic

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

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

Nazwa arkusza nie może zawierać znaków [ ] * ? : / \ lub znak ' (apostrof) jako pierwszy lub ostatni znak.


IsTitle

Zwraca True, jeśli pierwszy znak każdego słowa jest pisany wielkimi literami, a pozostałe znaki małymi literami.

Składnia:

svc.IsTitle(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


    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

Zwraca True, jeśli wszystkie znaki w ciągu są wielkimi literami. Znaki inne niż alfabetyczne są ignorowane.

Składnia:

svc.IsUpper(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


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

IsUrl

Zwraca wartość True, jeśli ciąg znaków jest prawidłowym bezwzględnym adresem URL (Uniform Resource Locator). Obsługiwane są tylko protokoły http, https i ftp.

Składnia:

svc.IsUrl(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:

W języku Basic

    MsgBox SF_String.IsUrl("http://foo.bar/?q=Test%20URL-encoded%20stuff") ' True
    MsgBox SF_String.IsUrl("www.somesite.org") ' False
  
W języku 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

Zwraca wartość True, jeśli wszystkie znaki w ciągu znaków są spacjami.

Składnia:

svc.IsWhitespace(inputstr: str): bool

Parametry:

inputstr: ciąg do sprawdzenia. Jeśli jest pusty, metoda zwraca False.

Przykład:


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

JustifyCenter

Zwraca ciąg wejściowy wyrównany do środka.

Początkowe i końcowe puste znaki są usuwane z ciągu, a pozostałe znaki są dopełniane w lewo i w prawo za pomocą znaków padding, tak aby ciąg miał całkowitą długość length.

Składnia:

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

Parametry:

inputstr: ciąg znaków, który ma być wyrównany do środka. Jeśli jest pusty, metoda zwraca pusty ciąg.

length: długość wynikowego ciągu (domyślnie = długość ciągu wejściowego).

Jeśli określona długość jest krótsza niż ciąg wejściowy wyrównany do środka, zwrócony ciąg zostanie obcięty.

padding: pojedynczy znak używany jako dopełnienie (domyślnie = spacja ASCII " ").

Przykład:


    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

Zwraca ciąg wejściowy wyrównany do lewej.

Początkowe i końcowe puste znaki są usuwane z ciągu, a pozostałe znaki są dopełniane w prawo znakami padding, tak aby ciąg miał całkowitą długość length.

Składnia:

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

Parametry:

inputstr: ciąg znaków, który ma być wyrównany do lewej strony. Jeśli jest pusty, metoda zwraca pusty ciąg.

length: długość wynikowego ciągu (domyślnie = długość ciągu wejściowego).

Jeśli określona długość jest krótsza niż ciąg wejściowy wyrównany do lewej, zwrócony ciąg zostanie obcięty.

padding: pojedynczy znak używany jako uzupełnienie (domyślnie = spacja ASCII " ").

Przykład:


    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

Zwraca ciąg wejściowy wyrównany do prawej.

Początkowe i końcowe puste znaki są usuwane z ciągu, a pozostałe znaki są dopełniane w lewo znakami padding, dzięki czemu ciąg ma całkowitą długość length.

Składnia:

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

Parametry:

inputstr: ciąg znaków, który ma być wyrównany do prawej strony. Jeśli jest pusty, metoda zwraca pusty ciąg.

length: długość wynikowego ciągu (domyślnie = długość ciągu wejściowego).

Jeśli określona długość jest krótsza niż ciąg wejściowy wyrównany do prawej strony, zwrócony ciąg zostanie obcięty.

padding: pojedynczy znak używany jako uzupełnienie (domyślnie = spacja ASCII " ").

Przykład:


    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

Zwraca ciąg wejściowy ujęty w pojedynczy lub podwójny cudzysłów. Istniejące cudzysłowy pozostają niezmienione, łącznie z cudzysłowami wiodącymi i/lub końcowymi.

Składnia:

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

Parametry:

inputstr: ciąg znaków, który należy ująć w cudzysłów.

quotechar: pojedynczy (') lub podwójny (") cudzysłów (domyślny).

Przykład:


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

Ta metoda może być przydatna podczas przygotowywania pola tekstowego do zapisania w pliku typu CSV, który wymaga, aby wartości tekstowe były ujęte w pojedyncze lub podwójne cudzysłowy.


ReplaceChar

Zastępuje wszystkie wystąpienia znaków określonych w parametrze Before odpowiednimi znakami określonymi w parametrze After.

Jeśli długość Before jest większa niż długość After, pozostałe znaki w Before są zastępowane przez ostatni znak w After.

Składnia:

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

Parametry:

inputstr: ciąg wejściowy, w którym nastąpi zamiana.

before: ciąg zawierający znaki, które będą wyszukiwane w ciągu wejściowym w celu zamiany.

after: ciąg znaków zawierający nowe znaki, które zastąpią te zdefiniowane w before.

Przykład:


    ' Zastępuje znaki akcentowane
    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"
  

Usługa SF_String udostępnia przydatne stałe publiczne dla zestawów znaków łacińskich, jak pokazano w poniższym przykładzie:


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

ReplaceRegex

Zastępuje wszystkie wystąpienia danego wyrażenia regularnego nowym ciągiem znaków.

Składnia:

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

Parametry:

inputstr: ciąg wejściowy, w którym nastąpi zamiana.

regex: wyrażenie regularne.

newstr: ciąg zastępujący.

casesensitive: podczas wyszukiwania może być uwzględniana wielkość liter lub nie (domyślnie = False).

Przykład:


    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." (każda mała litera zostaje zastąpiona przez "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." (każde słowo zostaje zastąpione przez "x")
  

ReplaceStr

Zastępuje w ciągu niektóre lub wszystkie wystąpienia tablicy ciągów tablicą nowych ciągów.

Składnia:

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

Parametry:

inputstr: ciąg wejściowy, w którym nastąpi zamiana.

oldstr: pojedynczy ciąg lub tablica ciągów. Ciągi o zerowej długości są ignorowane.

newstr: ciąg zastępujący lub tablica ciągów zastępujących.

Jeśli oldstr jest tablicą, każde wystąpienie dowolnego elementu w oldstr jest zastępowane przez newstr.

Jeśli oldstr i newstr są tablicami, zamiany następują jedna po drugiej, aż do UBound(newstr).

Jeśli oldstr ma więcej wpisów niż newstr, to pozostałe elementy w oldstr są zastępowane ostatnim elementem w newstr.

occurrences: maksymalna liczba zamian. Wartość domyślna to 0, co oznacza, że wszystkie wystąpienia zostaną zastąpione.

Gdy oldstr jest tablicą, parametr occurrence jest obliczany oddzielnie dla każdego elementu tablicy.

casesensitive: podczas wyszukiwania może być uwzględniana wielkość liter lub nie (domyślnie = False).

Przykład:


    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

Zwraca ciąg znaków z czytelną reprezentacją argumentu, obcięty o podaną długość. Jest to przydatne głównie do celów debugowania lub rejestrowania.

Jeśli parametr anyvalue jest obiektem, zostanie on ujęty w nawiasy kwadratowe "[" i "]".

W ciągach znaków tabulatory i podziały wierszy są zastępowane przez \t, \n lub \r.

Jeśli ostateczna długość przekracza parametr maxlength, druga część ciągu jest zastępowana przez " ... (N)", gdzie N jest całkowitą długością oryginalnego ciągu przed obcięciem.

Składnia:

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

Parametry:

anyvalue: wartość wejściowa, która ma być reprezentowana. Może to być dowolna wartość, taka jak ciąg znaków, tablica, obiekt Basic, obiekt UNO itp.

maxlength: maksymalna długość wynikowego ciągu. Wartość domyślna to 0, co oznacza, że nie ma ograniczeń co do długości wynikowej reprezentacji.

Przykład:


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

Reprezentacje typów danych, takie jak tablice lub obiekty ScriptForge.Dictionary, zawierają zarówno typy danych, jak i wartości:


    ' Przykład z wbudowaną tablicą Basic
    MsgBox SF_String.Represent(Array(1, 2, "Text" & Chr(9) & "here"))
    ' "[ARRAY] (0:2) (1, 2, Text\there)"
    ' Przykład z tablicą ScriptForge
    Dim aValues as Variant
    aValues = SF_Array.RangeInit(1, 5)
    MsgBox SF_String.Represent(aValues)
    ' "[ARRAY] (0:4) (1.0, 2.0, 3.0, 4.0, 5.0)"
    ' Przykład ze słownikiem ScriptForge
    Dim myDict As Variant : myDict = CreateScriptService("Dictionary")
    myDict.Add("A", 1) : myDict.Add("B", 2)
    MsgBox SF_String.Represent(myDict)
    ' "[Dictionary] ("A":1, "B":2)"
  

Reverse

Zwraca ciąg wejściowy w odwrotnej kolejności.

Ta metoda odpowiada wbudowanej w Basic funkcji StrReverse.

note

Aby skorzystać z funkcji StrReverse, w module musi znajdować się komenda Option VBASupport 1.


Składnia:

svc.Reverse(inputstr: str): str

Parametry:

inputstr: ciąg, który ma zostać odwrócony.

Przykład:


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

SplitLines

Zwraca tablicę ciągów liczoną od zera zawierającą wiersze w ciągu wejściowym. Każdy element tablicy uzyskuje się poprzez podzielenie ciągu wejściowego na znaki nowego wiersza.

Składnia:

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

Parametry:

inputstr: ciąg, który ma zostać podzielony.

keepbreaks: jeśli True, w tablicy wyjściowej zachowywane są podziały wierszy (domyślnie = False).

Przykład:


    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

Dzieli ciąg na tablicę elementów przy użyciu określonego ogranicznika.

Jeśli cytowany podciąg zawiera ogranicznik, jest on ignorowany. Jest to przydatne podczas analizowania rekordów w formacie CSV zawierających ciągi znaków w cudzysłowie.

Składnia:

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

Parametry:

inputstr: ciąg, który ma zostać podzielony.

separator: ciąg jednego lub większej liczby znaków, który będzie używany jako ogranicznik. Domyślnym ogranicznikiem jest znak spacji ASCII " ".

occurrences: maksymalna liczba podciągów do zwrócenia. Wartość domyślna to 0, co oznacza, że nie ma ograniczenia liczby zwracanych ciągów.

quotechar: pojedynczy (') lub podwójny (") cudzysłów.

Przykład:

W języku 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""", "")
  
W języku 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

Podczas reprezentowania ciągów uważaj na różnice między Basic i Pythonem. Na przykład w języku Basic dwa znaki "" w ciągu znaków są interpretowane jako pojedynczy znak ". W Pythonie ciągi ujęte w pojedyncze cudzysłowy mogą zawierać znaki " bez konieczności ich podwajania.


StartsWith

Zwraca True, jeśli pierwsze znaki ciągu są identyczne z danym podciągiem.

Ta metoda zwraca False, jeśli ciąg wejściowy lub podciąg ma długość = 0 lub gdy podciąg jest dłuższy niż ciąg wejściowy.

Składnia:

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

Parametry:

inputstr: ciąg do przetestowania.

substring: podciąg do przeszukania na początku inputstr.

casesensitive: podczas wyszukiwania może być uwzględniana wielkość liter lub nie (domyślnie = False).

Przykład:


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

TrimExt

Zwraca ciąg wejściowy bez początkowych i końcowych białych znaków.

Składnia:

svc.TrimExt(inputstr: str): str

Parametry:

inputstr: ciąg do przycięcia.

Przykład:


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

Unescape

Konwertuje dowolną sekwencję ucieczki (\\, \n, \r, \t) w ciągu wejściowym na odpowiadający jej znak ASCII.

Składnia:

svc.Unescape(inputstr: str): str

Parametry:

inputstr: ciąg do przekonwertowania.

Przykład:


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

Unquote

Usuwa pojedyncze lub podwójne cudzysłowy otaczające ciąg wejściowy.

Jest to przydatne podczas analizowania rekordów w formacie CSV zawierających ciągi znaków w cudzysłowie.

Składnia:

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

Parametry:

inputstr: ciąg, z którego mają zostać usunięte cudzysłowy.

quotechar: pojedynczy (') lub podwójny (") cudzysłów (domyślny).

Przykład:


    Dim s as String
    ' s = "Some text" (bez cudzysłowów zamykających)
    s = SF_String.Unquote("""Some text""")
    ' Poniższy ciąg nie zawiera cudzysłowów, więc pozostaje niezmieniony
    ' s = "Some text" (niezmieniony)
    s = SF_String.Unquote("Some text")
    ' Cudzysłowy wewnątrz ciągu nie są usuwane
    ' s = "The ""true"" meaning" (niezmieniony)
    s = SF_String.Unquote("The ""true"" meaning")
  

Wrap

Konwertuje ciąg wejściowy na tablicę podciągów, tak aby każdy element tablicy miał co najwyżej określoną liczbę znaków.

W praktyce ta metoda zwraca tablicę wierszy wyjściowych liczoną od zera, bez znaków nowego wiersza na końcu, z wyjątkiem istniejących wcześniej podziałów wierszy.

Tabulatory są zastępowane spacjami, tak jak w przypadku metody ExpandTabs.

Symboliczne podziały wierszy są zastępowane odpowiadającymi im znakami ASCII.

Jeśli zawinięte dane wyjściowe nie zawierają treści, zwrócona tablica jest pusta.

Składnia:

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

Parametry:

inputstr: ciąg do zawinięcia.

width: maksymalna liczba znaków w każdym wierszu (domyślnie = 70).

tabsize: przed zawinięciem tekstu istniejące znaki tabulacji Chr(9) są zastępowane spacjami. Argument tabsize definiuje pozycje tabulatora przy TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (domyślnie = 8).

Przykład:

W języku 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...")
  
W języku 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

Wszystkie podstawowe procedury lub identyfikatory ScriptForge poprzedzone znakiem podkreślenia „_” są zarezerwowane do użytku wewnętrznego. Nie należy ich używać w makrach Basic ani skryptach Pythona.


Prosimy o wsparcie!