Autore Topic: Cambiare un carattere all'interno di una stringa fra molti uguali  (Letto 810 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Cambiare un carattere all'interno di una stringa fra molti uguali
« Risposta #15 il: 15 Gennaio 2017, 23:02:12 »
Per questo quesito mi era venuto in mente che si sarebbe anche potuta usare la funzione scan.
Allora ho scritto questo:

Codice: [Seleziona]
Public Sub Main()
 
  Dim i As Byte
  Dim ss As String[]
  Dim s As String = "aaazbbbzccczddd"
  Dim z As String
 
  Print s
  For i = 1 To Len(s)
    z &= "*"
  Next
  ss = Scan(s, z)
  ss.Delete(7) 
  ss.Add(" ", 7) 
  For Each z In ss
    Print z;
  Next

End

Ma non funziona, mi da questo risultato:

Codice: [Seleziona]
aaazbbbzccczddd
 aaazbbbzccczddd

Vale a dire che non cancella e aggiunge lo spazio all'inizio.

Però se io uso il vettore senza popolarlo con scan allora funziona:

Codice: [Seleziona]
Public Sub Main()

  Dim i As Byte
  Dim ss As String[] = ["a", "a", "a", "z", "b", "b", "b", "z", "c", "c", "c", "z", "d", "d", "d"]
  Dim s As String
  Dim z As String = "aaazbbbzccczddd"
 
  Print z
  ss.Delete(7) 
  ss.Add(" ", 7) 
  For Each s In ss
    Print s;
  Next

End
E questo è l'atteso risultato:

Codice: [Seleziona]
aaazbbbzccczddd
aaazbbb ccczddd

Secondo voi perché accade questo?

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cambiare un carattere all'interno di una stringa fra molti uguali
« Risposta #16 il: 15 Gennaio 2017, 23:05:55 »
Secondo voi perché accade questo?
Per rovinarti la serata !    :rotfl:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Cambiare un carattere all'interno di una stringa fra molti uguali
« Risposta #17 il: 15 Gennaio 2017, 23:13:02 »
Per rovinarti la serata !    :rotfl:

Hai voglia, per così poco  ;D

Seriamente; evidentemente non è un normale vettore su cui puoi lavorare come con gli altri, pertanto Scan risulta limitato  :-\
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cambiare un carattere all'interno di una stringa fra molti uguali
« Risposta #18 il: 15 Gennaio 2017, 23:15:36 »
Guarda che cosa hai combinato:   ;D

Codice: [Seleziona]
Public Sub Main()

  Dim i As Byte
  Dim ss As String[]
  Dim s As String = "aaazbbbzccczddd"
  Dim z As String
 
  Print s
  For i = 1 To Len(s)
    z &= "*"
  Next

  ss = Scan(s, z)

  For i = 0 To ss.Max
    Print i,
    If IsNull(ss[i]) Then
      Print "Nullo"
    Else
      Print ss[i]
    Endif
  Next

End
Pertanto, andando a piazzare il valore ASCII 32 nel byte di indice 7, succede che......


Alla funzione Scan( ) c'avevo pensato pure io, ma credo che non sia utilizzabile proficuamente in questo caso.  :-X
« Ultima modifica: 15 Gennaio 2017, 23:21:56 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Cambiare un carattere all'interno di una stringa fra molti uguali
« Risposta #19 il: 15 Gennaio 2017, 23:28:32 »

Pertanto, andando a piazzare il valore ASCII 32 nel byte di indice 7, succede che......
antepongo lo spazio alla stringa.
Citazione
Alla funzione Scan( ) c'avevo pensato pure io, ma credo che non sia utilizzabile proficuamente in questo caso.  :-X

Evidentemente. Io facendo le prove con For Each non avrei mai capito, grazie della spiegazione.  :-*
Accidenti non ho indagato a sufficienza.

 :ciao: e ora  :sleepy: più sereno...
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.305
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cambiare un carattere all'interno di una stringa fra molti uguali
« Risposta #20 il: 15 Gennaio 2017, 23:31:13 »
Tutti i lettori di questo forum ti dovrebbero ringraziare per aver posto, comunque, la questione: ha fatto capire molte cose in più.   
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Cambiare un carattere all'interno di una stringa fra molti uguali
« Risposta #21 il: 16 Gennaio 2017, 09:54:33 »
GRAZIE! GRAZIE! GRAZIE!  :D
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)