Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 17 Aprile 2012, 23:59:27

Titolo: [RISOLTO] Se contando i caratteri in "aèc" con InStr fa 4 e non 3...
Inserito da: vuott - 17 Aprile 2012, 23:59:27
Lor signori e signore sono invitati a provare i risultati di questi due esempi:

Codice: gambas [Seleziona]

Public Sub Button1_Click()
  
  Print InStr("aec", "c")

End



Codice: gambas [Seleziona]

Public Sub Button1_Click()
  
  Print InStr("aèc", "c")   ' idem con: "aéc", "aàc", "aòc", "aùc"

End


...  :rolleyes:
Titolo: Re: Se contando i caratteri in "aèc" con InStr fa 4 e non 3...
Inserito da: md9327 - 18 Aprile 2012, 10:37:14
Per le stringhe in utf devi usare la classe String, come ad esempio String.Len(testo).

Se dai un occhio alla doc ufficiale, o ai changelog, vedi che la cosa è annotata.
Titolo: Re: Se contando i caratteri in "aèc" con InStr fa 4 e non 3...
Inserito da: vuott - 18 Aprile 2012, 11:01:24
Per le stringhe in utf devi usare la classe String, come ad esempio String.Len(testo).

Bene, md9327; grazie, non mi era capitato di leggerla.


Quindi, per chi legge, la riga va riscritta così:
Codice: gambas [Seleziona]

Public Sub Button1_Click()  
  
   Print String.InStr("aèc", "c")   ' idem con: "aéc", "aàc", "aòc", "aùc"  
  
End

il risultato in console ora è  3 .

Stesso discorso per le funzioni Len e RInStr: in caso di presenza di quei caratteri particolari bisogna usare, come ha detto md9327, i relativi metodi della classe String.
Quindi avremo: String.Len(stringa) e String.RInStr(stringa, substringa)