Autore Topic: [RISOLTO] Se contando i caratteri in "aèc" con InStr fa 4 e non 3...  (Letto 576 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
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:
« Ultima modifica: 18 Aprile 2012, 12:19:19 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 md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Se contando i caratteri in "aèc" con InStr fa 4 e non 3...
« Risposta #1 il: 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.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Se contando i caratteri in "aèc" con InStr fa 4 e non 3...
« Risposta #2 il: 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)
« Ultima modifica: 18 Aprile 2012, 12:19:43 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. »