Stringhe (libreria runtime di Apache OpenOffice)

From Apache OpenOffice Wiki
Jump to: navigation, search

Utilizzo dei set di caratteri

Per la gestione delle stringhe, Apache OpenOffice Basic utilizza il set di caratteri Unicode. Le funzioni Asc e Chr consentono di determinare il valore Unicode appartenente a un carattere e/o di individuare il carattere corrispondente a un dato valore Unicode. Le espressioni seguenti assegnano i vari valori Unicode alla variabile code:

Code = Asc("A")         ' Latin letter A (Unicode-value 65)
Code = Asc("€")         ' Euro character (Unicode-value 8364)
Code = Asc("Л")         ' Cyrillic letter Л (Unicode-value 1083)

Per contro, l'espressione

MyString = Chr(13)

assicura che la stringa MyString sia inizializzata con il valore del numero 13, che corrisponde a un'interruzione di riga forzata.

Il comando Chr è spesso utilizzato nei linguaggi Basic per inserire caratteri di controllo in una stringa. L'assegnazione

MyString = Chr(9) + "This is a test" + Chr(13)

assicura pertanto che il testo sia preceduto da un carattere di tabulazione (valore Unicode 9) e che venga aggiunta un'interruzione di riga forzata (valore Unicode 13) dopo il testo.

Accesso a parti di una stringa

Apache OpenOffice Basic comprende quattro funzioni che restituiscono stringhe parziali:

Left(MyString, Length)
Restituisce i primi caratteri per la lunghezza di MyString.
Right(MyString, Length)
Restituisce gli ultimi caratteri per la lunghezza di MyString.
Mid(MyString, Start, Length)
Restituisce i primi caratteri per la lunghezza di MyString a partire dalla posizione Start.
Len(MyString)
Restituisce il numero di caratteri di MyString.

Di seguito sono riportati alcuni esempi di chiamate per le funzioni qui descritte:

Dim MyString As String
Dim MyResult As String
Dim MyLen As Integer
 
MyString = "This is a small test"
MyResult = Left(MyString,5)      ' Provides the string "This "
MyResult = Right(MyString, 5)    ' Provides the string " test"
MyResult = Mid(MyString, 8, 5)   ' Provides the string " a sm"
MyLen = Len(MyString)            ' Provides the value 21

Ricerca e sostituzione

Apache OpenOffice Basic include la funzione InStr, che permette di ricercare una stringa parziale all'interno di un'altra stringa:

ResultString = InStr (MyString, SearchString)

Il parametro SearchString specifica la stringa da ricercare in MyString. La funzione restituisce un numero contenente la posizione in cui SearchString compare per la prima volta all'interno di MyString. Per individuare altre corrispondenze della stringa, la funzione offre inoltre l'opportunità di specificare una posizione di partenza iniziale da cui Apache OpenOffice Basic inizia la ricerca. In questo caso, la sintassi della funzione è:

ResultString = InStr(StartPosition, MyString, SearchString)

Negli esempi precedenti, InStr ignora i caratteri in maiuscolo e in minuscolo. Per modificare la ricerca in modo che InStr distingua tra maiuscole e minuscole, aggiungere il parametro 0, come illustrato nell'esempio seguente:

ResultString = InStr(MyString, SearchString, 0)

Utilizzando le funzioni presentate in precedenza per la modifica delle stringhe, i programmatori potranno eseguire ricerche e sostituzioni di una stringa all'interno di un'altra:

Function Replace(Source As String, Search As String, NewPart As String)
  Dim Result As String
  Dim StartPos As Long
  Dim CurrentPos As Long
 
  Result = ""
  StartPos = 1
  CurrentPos = 1
 
  If Search = "" Then
    Result = Source
  Else 
    Do While CurrentPos <> 0
      CurrentPos = InStr(StartPos, Source, Search)
      If CurrentPos <> 0 Then
        Result = Result + Mid(Source, StartPos, _
        CurrentPos - StartPos)
        Result = Result + NewPart
        StartPos = CurrentPos + Len(Search)
      Else
        Result = Result + Mid(Source, StartPos, Len(Source))
      End If                ' Position <> 0
    Loop 
  End If 
 
  Replace = Result
End Function

La funzione esegue un ciclo di ricerca nella stringa Search tramite InStr nel termine originale Source. Se individua il termine, prende la parte prima dell'espressione e la scrive nel buffer di restituzione Result. Aggiunge la sezione Part al punto del termine di ricerca Search. Se non vengono reperite altre corrispondenze per il termine, la funzione determina la parte della stringa rimasta e la aggiunge al buffer di restituzione. Restituisce la stringa prodotta in questo modo come risultato del processo di sostituzione.

Poiché la sostituzione di parti di sequenze di caratteri è una delle funzioni utilizzate più frequentemente, la funzione Mid in Apache OpenOffice Basic è stata ampliata in modo che questa attività sia eseguita automaticamente. L'esempio seguente sostituisce tre caratteri con la stringa is dall'ottava posizione della stringa MyString.

Dim MyString As String
 
MyString = "This was my text"
Mid(MyString, 6, 3, "is")

Formattazione di stringhe

La funzione Format formatta i numeri sotto forma di stringa. Per procedere, la funzione si aspetta che sia specificata un'espressione Format, che viene quindi utilizzata come modello per la formattazione dei numeri. Ogni segnaposto all'interno del modello assicura che questa voce sia formattata in modo corrispondente nel valore di output. I cinque segnaposto più importanti all'interno di un modello sono i caratteri zero (0), cancelletto (#), punto (.), virgola (,) e dollaro ($).

Il carattere 0 all'interno del modello garantisce che un numero sia sempre situato nel punto corrispondente. Se non è fornito un numero, al suo posto viene visualizzato 0.

Un . corrisponde al simbolo del punto decimale definito dal sistema operativo nelle impostazioni specifiche del paese.

L'esempio seguente mostra come i caratteri 0 e . possono definire le cifre dopo il punto decimale in un'espressione:

MyFormat = "0.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0,40"
MyString = Format(0.434, MyFormat)       ' Provides "0,43"

Analogamente, si possono aggiungere gli zeri davanti a un numero per ottenere la lunghezza desiderata:

MyFormat = "0000.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0000,40"
MyString = Format(0.434, MyFormat)       ' Provides "0000,43"

La , rappresenta il carattere utilizzato dal sistema operativo per il separatore delle migliaia e il # rappresenta una cifra o posizione visualizzata solo se richiesto dalla stringa di input.

MyFormat = "#,##0.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1.579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1.579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0,40"
MyString = Format(0.434, MyFormat)       ' Provides "0,43"

In luogo del segnaposto $, la funzione Format visualizza il simbolo di valuta pertinente definito dal sistema (nell'esempio si presuppone che siano state definite le impostazioni internazionali di un paese europeo):

MyFormat = "#,##0.00 $"   
MyString = Format(-1579.8, MyFormat)     ' Provides "-1.579,80 €" 
MyString = Format(1579.8, MyFormat)      ' Provides "1.579,80 €" 
MyString = Format(0.4, MyFormat)         ' Provides "0,40 €" 
MyString = Format(0.434, MyFormat)       ' Provides "0,43 €"

È possibile utilizzare anche le istruzioni utilizzate in VBA per la formattazione della data e dell'ora:

sub main
    dim myDate as date
    myDate = "01/06/98"
    TestStr = Format(myDate, "mm-dd-yyyy") ' 01-06-1998
    MsgBox TestStr
end sub
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools