Servizio ScriptForge.String (SF_String)

Contenuto
Indice 🔎︎

# Servizio ScriptForge.String

Il servizio String fornisce una raccolta di metodi per l'eleborazione delle stringhe. Questi metodi possono essere usati per:

- Convalidare il contenuto delle stringhe

- Formattare le stringhe rimuovendo spazi, giustificandole o adattando i loro contenuti

- Usare le espressioni regolari per cercare e sostituire parti delle stringhe

- Applicare algoritmi di hash alle stringhe, ecc.

## Definizioni

### Interruzioni di riga

Il servizio String riconosce i seguenti tipi di interruzione di riga:

Nome simbolico | Numero ASCII
Nuova riga Tabulatore verticale Ritorno a capo Nuova riga + Ritorno a capo Separatore file Separatore di gruppo Separatore di record Prossima riga Separatore di riga Separatore di paragrafo | 10 12 13 10 + 13 28 29 30 133 8232 8233

### Spazi vuoti

Il servizio String riconosce i seguenti tipi di spazi:

Nome simbolico | Numero ASCII
Spazio Tabulazione orizzontale A capo Tabulazione verticale Avanzamento di formulario Carattere di ritorno Prossima riga Spazio unificatore Separatore di riga Separatore di paragrafo | 32 9 10 11 12 13 133 160 8232 8233

### Sequenze di escape

Il seguente è un elenco delle sequenze di escape che potete usare nelle stringhe.

Sequenza di escape | Nome simbolico | Numero ASCII
\n \r \t | A capo Carattere di ritorno Tabulazione orizzontale | 10 13 9

Per fare in modo che la sequenza di escape "\n" sia interpretata alla lettera come una stringa, usate semplicemente "\\n" invece di "\" & Chr(10).

### Caratteri non stampabili:

I caratteri che nel database dei caratteri Unicode sono definiti come “Altro” o “Separatore” sono considerati come caratteri non stampabili.

Anche i caratteri di controllo (codici ascii <= 0x1F) sono considerati come non stampabili.

### Virgolette all'interno delle stringhe:

Per aggiungere delle virgolette all'interno delle stringhe usate \' (virgoletta) o \" (virgolette doppie). Per esempio:

- La stringa [str\'i\'nga] è interpretata come [str'i'nga]

- La stringa [str\"i\"nga] è interpretata come [str"i"nga]

## Invocare il servizio

Prima di usare il servizio ScriptForge.String è necessario caricare la libreria ScriptForge usando:

##### In Basic

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

Loading the library will create the SF_String object that can be used to call the methods in the String service.

The following code snippets show the three ways to call methods from the String service (the Capitalize method is used as an example):

        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

The code snippet below illustrates how to invoke methods from the String service in Python scripts. The IsIPv4 method is used as an example.

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

## Proprietà

The SF_String object provides the following properties for Basic scripts:

Nome | Sola lettura | Descrizione
sfCR | Sì | Carattere di ritorno: Chr(13)
sfCRLF | Sì | Carattere di ritorno + A capo: Chr(13) & Chr(10)
sfLF | Sì | A capo: Chr(10)
sfNEWLINE | Sì | Carattere di ritorno + A capo, che possono essere 1) Chr(13) e Chr(10) o 2) A capo: Chr(10) a seconda del sistema operativo.
sfTAB | Sì | Tabulazione orizzontale: Chr(9)

Potete usare le proprietà precedenti per identificare o inserire i corrispondenti caratteri all'interno delle stringhe. Per esempio, il carattere di A capo può essere sostituito da SF_String.sfLF.

List of Methods in the String Service
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

Il primo argomento della maggior parte dei metodi è la stringa da prendere in considerazione. Questa viene sempre passata per riferimento e lasciata inalterata. Metodi come Capitalize, Escape, ecc., restituiscono una nuova stringa al termine dell'esecuzione.

Because Python has comprehensive built-in string support, most of the methods in the String service are available for Basic scripts only. The methods available for Basic and Python are: HashStr, IsADate, IsEmail, IsFileName, IsIBAN, IsIPv4, IsLike, IsSheetName, IsUrl, SplitNotQuoted and Wrap.

## Capitalize

Rende maiuscolo il primo carattere di ogni parola della stringa di partenza.

### Sintassi:

svc.Capitalize(inputstr: str): str

### Parametri:

inputstr: The string to be capitalized.

### Esempio:

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

## Count

Conta il numero di occorrenze di una sottostringa o di un'espressione regolare all'interno di una stringa.

### Sintassi:

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

### Parametri:

inputstr: The input string to be examined

substring: The substring or the regular expression to be used during search

isregex: Use True if the substring is a regular expression (Default = False)

casesensitive: The search can be case sensitive or not (Default = False).

### Esempio:

        'Conta le occorrenze della sottostringa "or" all'interno della stringa di partenza (restituisce 2)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "or", CaseSensitive := False)
        'Conta il numero di parole con solo lettere minuscole (restituisce 7)
        MsgBox SF_String.Count("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "\b[a-z]+\b", IsRegex := True, CaseSensitive := True)

Per saperne di più sulle espressioni regolari, fate riferimento alla documentazione di Python sulle Operazioni con le Espressioni regolari.

## EndsWith

Restituisce True se una stringa termina con la sottostringa indicata.

La funzione restituisce False se la stringa o la sottostringa hanno una lunghezza pari a = 0, o se la sottostringa è più lunga della stringa.

### Sintassi:

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

### Parametri:

inputstr: The string to be tested.

substring: The substring to be searched at the end of inputstr.

casesensitive: The search can be case sensitive or not (Default = False).

### Esempio:

        'Restituisce True perchè il metodo è stato chiamato con il valore predefinito di CaseSensitive = False
        MsgBox SF_String.EndsWith("abcdefg", "EFG")
        'Restituisce False a causa del parametro CaseSensitive
        MsgBox SF_String.EndsWith("abcdefg", "EFG", CaseSensitive := True)

## Escape

Converte le interruzioni di riga e le tabulazioni contenute nella stringa di partenza nella loro equivalente sequenza di escape (\\, \n, \r, \t).

### Sintassi:

svc.Escape(inputstr: str): str

### Parametri:

inputstr: The string to be converted.

### Esempio:

        'Restituisce la stringa "abc\n\tdef\\n"
        MsgBox SF_String.Escape("abc" & Chr(10) & Chr(9) & "def\n")

## ExpandTabs

Sostituisce i caratteri di tabulazione Chr(9) con caratteri di spazio in modo da replicare il comportamento degli stop del tabulatore.

Se trova un'interruzione di riga, va a capo e il contatore dei caratteri viene azzerato.

### Sintassi:

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

### Parametri:

inputstr: The string to be expanded

tabsize: This parameter is used to determine the Tab stops using the formula: TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (Default = 8)

### Esempio:

        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

Sostituisce tutti i caratteri non stampabili della stringa inserita con il carattere indicato.

### Sintassi:

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

### Parametri:

inputstr: The string to be searched

replacedby: Zero, one or more characters that will replace all non-printable characters in inputstr (Default = "")

### Esempio:

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

## FindRegex

Trova, all'interno di una stringa, una sottostringa conforme all'espressione regolare precisata.

### Sintassi:

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

### Parametri:

inputstr: The string to be searched

regex: The regular expression

start: The position in the string where the search will begin. This parameter is passed by reference, so after execution the value of start will point to the first character of the found substring. If no matching substring is found, start will be set to 0.

casesensitive: The search can be case sensitive or not (Default = False).

forward: Determines the direction of the search. If True, search moves forward. If False search moves backwards (Default = True)

At the first iteration, if forward = True, then start should be equal to 1, whereas if forward = False then start should be equal to Len(inputstr)

### Esempio:

        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

Nell'esempio sopra, il nuovo valore di lStart può essere usato per continuare a cercare la stessa stringa inserita, impostando il parametro Start a lStart + Len(result) all'iterazione successiva.

## HashStr

Le funzioni di hash sono usate in alcuni algoritmi crittografici, nelle firme digitali, nei codici di autenticazione dei messaggi, nel rilevamenti di manipolazioni, nelle "impronte digitali", nei checksum (controllo di integrità dei messaggi), nelle tabelle di hash, nella memorizzazione delle password e per molto altro ancora.

Il metodo HashStr restituisce il risultato di una funzione di hash, applicata alla stringa indicata, usando un algoritmo specifico, in formato stringa esadecimale con lettere minuscole.

Gli algoritmi di hash supportati sono: MD5, SHA1, SHA224, SHA256, SHA384 e SHA512.

### Sintassi:

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

### Parametri:

inputstr: The string to hash. It is presumed to be encoded in UTF-8. The hashing algorithm will consider the string as a stream of bytes.

algorithm: One of the supported algorithms listed above, passed as a string.

### Esempio:

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

Codifica la stringa inserita nei codici carattere HTML, sostituendo i caratteri speciali con il loro corrispondente &.

Per esempio, il carattere é sarà sostituito con &eacute; o con un codice numerico HTML equivalente.

### Sintassi:

svc.HtmlEncode(inputstr: str): str

### Parametri:

inputstr: The string to encode.

### Esempio:

        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

Restituisce True se la stringa inserita è una data valida secondo il formato data specificato.

### Sintassi:

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

### Parametri:

inputstr: The string to be checked. If empty, the method returns False

dateformat: The date format, as a string. It can be either "YYYY-MM-DD" (default), "DD-MM-YYYY" or "MM-DD-YYYY"

Il trattino (-) può essere sostituito con un punto (.), una barra (/) o uno spazio.

Se il formato non è valido, il metodo restituisce False.

### Esempio:

##### In Basic

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

Questo metodo controlla il formato della stringa inserita senza eseguire alcun controllo specifico in base al calendario. Perciò non controlla se la stringa inserita rispetta gli anni bisestili o i mesi da 30 o 31 giorni. Per questo consultate la funzione incorporata IsDate.

L'esempio sottostante mostra la differenza tra i metodi IsADate (ScriptForge) e la funzione (incorporata) IsDate.

        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

Restituisce True se tutti i caratteri della stringa sono alfabetici.

I caratteri alfabetici sono quei caratteri che nella documentazione Unicode Character Database sono definiti come Letter.

### Sintassi:

svc.IsAlpha(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

## IsAlphaNum

Restituisce True se tutti i caratteri della stringa sono alfabetici, numerici o "_" (trattino basso). Il primo carattere non deve essere una cifra.

### Sintassi:

svc.IsAlphaNum(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

## IsAscii

Restituisce True se tutti i caratteri della stringa sono caratteri ASCII.

### Sintassi:

svc.IsAscii(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

## IsDigit

Restituisce True se tutti i caratteri della stringa sono cifre.

### Sintassi:

svc.IsDigit(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

## IsEmail

Restituisce True se la stringa è un indirizzo di posta elettronica valido.

### Sintassi:

svc.IsEmail(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

Restituisce True se la stringa è un nome di file valido per il sistema operativo specificato.

### Sintassi:

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

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

osname: The operating system name, as a string. It can be "WINDOWS", "LINUX", "MACOSX" or "SOLARIS".

Il valore predefinito è il sistema operativo corrente nel quale lo script viene eseguito.

### Esempio:

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

Restituisce True se tutti i caratteri della stringa sono cifre esadecimali.

### Sintassi:

svc.IsHexDigit(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

Le cifre esadecimali possono avere il prefisso "0x" o "&H".

### Esempio:

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

## IsIBAN

Restituisce True se la stringa è un IBAN (International Bank Account Number) valido. Il confronto non distingue tra minuscole e maiuscole.

### Sintassi:

svc.IsIBAN(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Valore restituito:

True se la stringa contiene un codice IBAN valido.

### Esempio:

        ' 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

Restituisce True se la stringa è un indirizzo IP(v4) valido.

### Sintassi:

svc.IsIPv4(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

Restituisce True se l'intera stringa inserita corrisponde a un determinato schema contenente caratteri jolly.

### Sintassi:

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

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

pattern: The pattern as a string. Wildcards are:

- "?" rappresenta un singolo carattere qualsiasi;

- "*" rappresenta zero, uno o più caratteri.

casesensitive: The search can be case sensitive or not (Default = False).

### Esempio:

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

Restituisce True se tutti i caratteri della stringa sono lettere minuscole. I caratteri non alfabetici vengono ignorati.

### Sintassi:

svc.IsLower(inputstr: str): bool

### Parametri:

InputStr: la stringa da controllare. Se vuota, il metodo restituisce False.

### Esempio:

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

## IsPrintable

Restituisce True se tutti i caratteri della stringa sono stampabili.

### Sintassi:

svc.IsPrintable(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

## IsRegex

Restituisce True se l'intera stringa inserita corrisponde all'espressione regolare specificata.

### Sintassi:

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

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

regex: The regular expression. If empty, the method returns False.

casesensitive: The search can be case sensitive or not (Default = False).

### Esempio:

            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

Restituisce True se la stringa inserita è un nome valido di un foglio di Calc.

### Sintassi:

svc.IsSheetName(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

Il nome di un foglio non deve contenere i caratteri [ ] * ? : / \ o il carattere ' (apostrofo) come primo o ultimo carattere.

## IsTitle

Restituisce True se il primo carattere di ogni parola è maiuscolo e i restanti caratteri sono minuscoli.

### Sintassi:

svc.IsTitle(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

        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

Restituisce True se tutti i caratteri della stringa sono maiuscoli. I caratteri non alfabetici vengono ignorati.

### Sintassi:

svc.IsUpper(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

## IsUrl

Restituisce True se la stringa è un indirizzo URL (Uniform Resource Locator) assoluto valido. Sono supportati solo i protocolli http, https e ftp.

### Sintassi:

svc.IsUrl(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

Restituisce True se tutti i caratteri della stringa sono spazi bianchi

### Sintassi:

svc.IsWhitespace(inputstr: str): bool

### Parametri:

inputstr: The string to be checked. If empty, the method returns False.

### Esempio:

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

## JustifyCenter

Restituisce la stringa inserita giustificata al centro.

The leading and trailing white spaces are stripped and the remaining characters are completed left and right up to a specified total length with the character padding.

### Sintassi:

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

### Parametri:

inputstr: The string to be center-justified. If empty, the method returns an empty string.

length: The length of the resulting string (default = the length of the input string).

Se la lunghezza specificata è più corta della stringa inserita da allineare al centro, la stringa restituita è troncata.

padding: The single character to be used as padding (default = the Ascii space " ").

### Esempio:

        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

Restituisce la stringa inserita allineata a sinistra.

The leading white spaces are stripped and the remaining characters are completed to the right up to a specified total length with the character padding.

### Sintassi:

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

### Parametri:

inputstr: The string to be left-justified. If empty, the method returns an empty string.

length: The length of the resulting string (default = the length of the input string).

Se la lunghezza specificata è più corta della stringa inserita da allineare a sinistra, allora la stringa restituita è troncata.

padding: The single character to be used as padding (default = the Ascii space " ").

### Esempio:

        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

Restituisce la stringa inserita allineata a destra.

The leading white spaces are stripped and the remaining characters are completed to the left up to a specified total length with the character padding.

### Sintassi:

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

### Parametri:

inputstr: The string to be right-justified. If empty, the method returns an empty string.

length: The length of the resulting string (default = the length of the input string).

Se la lunghezza specificata è più corta della stringa inserita da allineare a destra, allora la stringa restituita è troncata.

padding: The single character to be used as padding (default = the Ascii space " ").

### Esempio:

        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

Restituisce la stringa inserita racchiusa tra virgolette singole o doppie. Le virgolette esistente rimangono invariate, comprese quelle iniziali e/o finali.

### Sintassi:

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

### Parametri:

inputstr: The string to quote.

quotechar: Either the single (') or double (") quote (default).

### Esempio:

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

Questo metodo può essere utile per preparare un campo stringa al fine di memorizzarlo in un tipo di file come il CSV, che richiede che i valori di testo siano racchiusi tra virgolette singole o doppie.

## ReplaceChar

Sostituisce tutte le occorrenze del carattere specificato nel parametro Before con il corrispondente carattere specificato in After.

Se la lunghezza di Before è maggiore di quella di After, i caratteri residui in Before sono sostituiti con l'ultimo carattere di After.

### Sintassi:

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

### Parametri:

inputstr: The input string on which replacements will occur.

before: A string with the characters that will be searched in the input string for replacement.

after: A string with the new characters that will replace those defined in before.

### Esempio:

        ' Sostituisce i caratteri accentati
        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"

Il servizio SF_String fornisce delle costanti pubbliche utili per i set di caratteri latini, come mostrato nel seguente esempio:

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

## ReplaceRegex

Sostituisce tutte le occorrenze di un determinata espressione regolare con una nuova stringa.

### Sintassi:

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

### Parametri:

inputstr: The input string on which replacements will occur.

regex: The regular expression.

newstr: The replacing string.

casesensitive: The search can be case sensitive or not (Default = False).

### Esempio:

        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." (ogni lettera minuscola viene sostituita da una "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." (ogni parola viene sostituita da una "x")

## ReplaceStr

Sostituisce in una stringa alcune o tutte le occorrenze presenti in una matrice di stringhe con quelle di una matrice di nuove stringhe.

### Sintassi:

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

### Parametri:

inputstr: The input string on which replacements will occur.

oldstr: A single string or an array of strings. Zero-length strings are ignored.

newstr: The replacing string or the array of replacing strings.

If oldstr is an array, each occurrence of any of the items in oldstr is replaced by newstr.

If oldstr and newstr are arrays, replacements occur one by one up to the UBound(newstr).

If oldstr has more entries than newstr, then the residual elements in oldstr are replaced by the last element in newstr.

occurrences: The maximum number of replacements. The default value is 0, meaning that all occurrences will be replaced.

When oldstr is an array, the occurrence parameter is computed separately for each item in the array.

casesensitive: The search can be case sensitive or not (Default = False).

### Esempio:

        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

Restituisce una stringa con una rappresentazione leggibile dell'argomento, troncata alla lunghezza indicata. Questa è utile principalmente per finalità di debug e di tracciamento.

If the anyvalue parameter is an object, it will be enclosed with square brackets "[" and "]".

Nelle stringhe, i segni di tabulazione e le interruzioni di riga sono sostituite da \t, \n o \r.

If the final length exceeds the maxlength parameter, the latter part of the string is replaced by " ... (N)" where N is the total length of the original string before truncation.

### Sintassi:

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

### Parametri:

anyvalue: The input value to be represented. It can be any value, such as a string, an array, a Basic object, a UNO object, etc.

maxlength: The maximum length of the resulting string. The default value is 0, meaning there is no limit to the length of the resulting representation.

### Esempio:

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

Fate attenzione che la rappresentazione di tipi di dati come istanze di oggetti Matrice e dizionari ScriptForge.Dictionary comprendono sia il tipo di dati, sia i relativi valori:

        ' un esempio con una matrice incorporata di Basic
        MsgBox SF_String.Represent(Array(1, 2, "Text" & Chr(9) & "here"))
        ' "[ARRAY] (0:2) (1, 2, Text\there)"
        ' un esempio con una matrice di 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)"
        ' un esempio con un dizionario di 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

Restituisce la stringa inserita in ordine inverso.

This method is equivalent to the built-in StrReverse Basic function.

To use the StrReverse function, the statement Option VBASupport 1 must be present in the module.

### Sintassi:

svc.Reverse(inputstr: str): str

### Parametri:

inputstr: The string to be reversed.

### Esempio:

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

## SplitLines

Restituisce una matrice di stringhe, con indice a partire da zero, con le righe della stringa inserita. Ogni elemento della matrice è ottenuto spezzando la stringa inserita in corrispondenza dei caratteri di interruzione di riga.

### Sintassi:

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

### Parametri:

inputstr: The string to be split.

keepbreaks: When True, line breaks are preserved in the output array (default = False).

### Esempio:

        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

Divide una stringa in una matrice di elementi usando uno specifico delimitatore.

Se una sottostringa racchiusa tra virgolette contiene un delimitatore, questo viene ignorato. Ciò è utile quando si elaborano record tipo CSV che contengono stringhe tra virgolette.

### Sintassi:

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

### Parametri:

inputstr: The string to be split.

delimiter: A string of one or more characters that will be used as delimiter. The default delimiter is the Ascii space " " character.

occurrences: The maximum number of substrings to return. The default value is 0, meaning that there is no limit to the number of returned strings.

quotechar: Either the single (') or double (") quote.

### Esempio:

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

Beware of the differences between Basic and Python when representing strings. For example, in Basic two "" characters inside a string are interpreted as a single " character. In Python, strings enclosed with single quotes can contain " characters without having to double them.

## StartsWith

Restituisce True se i primi caratteri di una stringa sono identici alla sottostringa indicata.

Questo metodo restituisce False se una tra la stringa inserita o la sottostringa possiede una lunghezza pari a zero, oppure quando la sottostringa è più lunga della stringa inserita.

### Sintassi:

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

### Parametri:

inputstr: The string to be tested.

substring: The substring to be searched at the start of inputstr.

casesensitive: The search can be case sensitive or not (Default = False).

### Esempio:

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

## TrimExt

Restituisce la stringa inserita senza gli spazi iniziali e finali.

### Sintassi:

svc.TrimExt(inputstr: str): str

### Parametri:

inputstr: The string to trim.

### Esempio:

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

## Unescape

Converte qualsiasi sequenza di escape (\\, \n, \r, \t) presente nella stringa inserita nel corrispondente carattere ASCII.

### Sintassi:

svc.Unescape(inputstr: str): str

### Parametri:

inputstr: The string to be converted.

### Esempio:

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

## Unquote

Rimuove le virgolette singole o doppie che racchiudono la stringa inserita.

Questo è utile quando si elabora dei record tipo CSV che contengono stringhe tra virgolette.

### Sintassi:

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

### Parametri:

inputstr: The string to unquote.

quotechar: Either the single (') or double (") quote (default).

### Esempio:

        Dim s as String
        ' s = "Some text" (without enclosing quotes)
        s = SF_String.Unquote("""Some text""")
        ' The string below does not have enclosing quotes, so it remains unchanged
        ' s = "Some text" (unchanged)
        s = SF_String.Unquote("Some text")
        ' Le virgolette all'interno della stringa non sono rimosse
        ' s = "The ""true"" meaning" (unchanged)
        s = SF_String.Unquote("The ""true"" meaning")

## Wrap

Converte la stringa inserita in una matrice di sottostringhe, in modo che ogni elemento della matrice abbia al massimo il numero di caratteri indicato.

In pratica, questo metodo restituisce una matrice, con indice a partire da zero, di righe di output, senza caratteri di a capo alla fine, fatta eccezione delle interruzioni di riga preesistenti.

Le tabulazioni vengono espanse usando la stessa procedura eseguita dal metodo ExpandTabs.

Le interruzioni di riga simboliche sono sostituite con i rispettivi caratteri ASCII equivalenti.

Se l'output reimpaginato non ha contenuto, la matrice restituita è vuota.

### Sintassi:

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

### Parametri:

inputstr: The string to wrap.

width: The maximum number of characters in each line (Default = 70).

tabsize: Before wrapping the text, the existing TAB Chr(9) characters are replaced with spaces. The argument tabsize defines the TAB stops at TabSize + 1, 2 * TabSize + 1 , ... N * TabSize + 1 (Default = 8).

### Esempio:

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

All ScriptForge Basic routines or identifiers that are prefixed with an underscore character "_" are reserved for internal use. They are not meant be used in Basic macros or Python scripts.

Argomenti correlati

Servizio ScriptForge.Array

String Function