Differenze tra le versioni di "Non visualizzare i caratteri non-stampabili di una stringa che inizia con caratteri stampabili"

Da Gambas-it.org - Wikipedia.
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Se una stringa ha inizio con uno o più caratteri stampabili seguiti da uno o più caratteri ''non-stampabili'', il primo dei quali sia lo zero (0x00), per far visualizzare i soli caratteri stampabili (ossia quelli iniziali della stringa), si utilizzerà un ''Puntatore'' alla variabile di tipo stringa contenente l'insieme di quei caratteri.
+
Se una stringa ha inizio con uno o più caratteri stampabili seguiti da uno o più caratteri ''non-stampabili'', il primo dei quali sia lo zero (0x00), per far visualizzare i soli caratteri stampabili (ossia quelli iniziali della stringa), si potranno adottare almeno due modalità. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
 +
 
 +
 
 +
===Ciclo sui dati di un vettore di tipo Byte[ ]===
 +
Con questa modalità si effettuerà un ciclo di verifica sul valore di ogni elemento di un vettore di tipo "Byte[ ]", nel quale sia stato caricata la stringa originaria. Non appena viene incontrato il byte di valore zero (&00), si eliminerà dal vettore quel byte fino alla fine, lasciando così solo i primi byte utili contenenti i valori ascii dei caratteri stampabili.
 +
 
 +
Mostriamo un semplice esempio, il quale presuppone che la stringa da mostrare abbia <SPAN Style="text-decoration:underline">certamente</span> uno o più caratteri ''non-stampabili'' dopo quelli iniziali stampabili:
 +
'''Public''' Sub Main()
 +
 +
  Dim s As String
 +
  Dim bb As Byte[]
 +
  Dim b As Byte
 +
 
 +
<FONT Color=gray>' ''Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:''</font>
 +
  s = "Testo iniziale<FONT Color=#B22222>\x00\x10\x12\x90\x91</font>"
 +
 
 +
  bb = Byte[].FromString(s)
 +
 
 +
<FONT Color=gray>' ''Si procede ad eliminare dalla stringa originaria i caratteri "non-stampabili":''</font>
 +
  While bb[b] > 0
 +
    Inc b
 +
  Wend
 +
 +
  bb.Remove(b, bb.Max - b)
 +
   
 +
<FONT Color=gray>' ''Il risultato mostra, dunque, "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:''</font>
 +
  Print bb.ToString(0, bb.Count)
 +
 +
'''End'''
 +
 
 +
 
 +
===Uso di un ''Puntatore'' alla variabile di tipo Stringa===
 +
In questa modalità si utilizzerà un ''Puntatore'' alla variabile di tipo stringa contenente l'insieme di quei caratteri.
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
  Dim s As String
+
  Dim s As String
  Dim p As Pointer
+
  Dim p As Pointer
 
    
 
    
 
  <FONT Color=gray>' ''Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:''</font>
 
  <FONT Color=gray>' ''Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:''</font>
Riga 22: Riga 54:
 
   
 
   
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
=Note=
 +
[1] Vedere anche le seguenti pagine:
 +
* [[Verificare se in una stringa vi sono caratteri non stampabili]]
 +
* [[Rimuovere da una stringa tutti i caratteri non-stampabili eventualmente presenti]]

Versione attuale delle 08:33, 24 giu 2023

Se una stringa ha inizio con uno o più caratteri stampabili seguiti da uno o più caratteri non-stampabili, il primo dei quali sia lo zero (0x00), per far visualizzare i soli caratteri stampabili (ossia quelli iniziali della stringa), si potranno adottare almeno due modalità. [nota 1]


Ciclo sui dati di un vettore di tipo Byte[ ]

Con questa modalità si effettuerà un ciclo di verifica sul valore di ogni elemento di un vettore di tipo "Byte[ ]", nel quale sia stato caricata la stringa originaria. Non appena viene incontrato il byte di valore zero (&00), si eliminerà dal vettore quel byte fino alla fine, lasciando così solo i primi byte utili contenenti i valori ascii dei caratteri stampabili.

Mostriamo un semplice esempio, il quale presuppone che la stringa da mostrare abbia certamente uno o più caratteri non-stampabili dopo quelli iniziali stampabili:

Public Sub Main()

  Dim s As String
  Dim bb As Byte[]
  Dim b As Byte
 
' Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:
  s = "Testo iniziale\x00\x10\x12\x90\x91"
  
  bb = Byte[].FromString(s)
  
' Si procede ad eliminare dalla stringa originaria i caratteri "non-stampabili":
  While bb[b] > 0
    Inc b
  Wend

  bb.Remove(b, bb.Max - b)
   
' Il risultato mostra, dunque, "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:
  Print bb.ToString(0, bb.Count)

End


Uso di un Puntatore alla variabile di tipo Stringa

In questa modalità si utilizzerà un Puntatore alla variabile di tipo stringa contenente l'insieme di quei caratteri.

Mostriamo un semplice esempio:

Public Sub Main()

  Dim s As String
  Dim p As Pointer
 
' Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:
  s = "Testo iniziale\x00\x10\x12\x90\x91"

' Viene visualizzata la stringa con i caratteri non-stampabili:
  Print s

' Creiamo un "Puntatore" alla variabile di tipo Stringa:
  p = Alloc(s)
 
' Dereferenziamo il "Puntatore". Il risultato mostra "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:
  Print String@(p)

  Free(p)

End


Note

[1] Vedere anche le seguenti pagine: