Archivi (sola lettura) > Domande tecniche (Gambas 2)

[RISOLTO] Impedire caratteri speciali nella textbox

(1/2) > >>

vaillant86:
Ciao a tutto il forum, non mi collegavo da un pò di tempo ;D

Ho un problema che non sono riuscito a risolvere con google e documentazione varia. In pratica in un programma ho due textbox in cui l'utente inserisce due stringhe (nome e cognome). Vorrei evitare di far inserire i caratteri speciali come @ # ! { ecc.

Spulciando qua e la ho visto che si dovrebbe usare il componente gb.pcre e regexp, ma non ho capito la sintassi da usare. Cioè, una stringa del genere

--- Codice: ---
(?i)\b[a-z0-9._%\-]+@[a-z0-9._%\-]+\.[A-Z]{2,4}\b
--- Termina codice ---
mi assicura un corretto indirizzo email (mi riferisco alla documentazione ufficiale dove è riportato l'esempio) ma non so come adattarlo alla mia situazione.

Attendo fiducioso :)

Ceskho:
Potresti creare nell'evento change un'algoritmo che ti elimina quei caratteri. Ora vado a memoria che non ho gambas sotto mano


--- Codice: gambas ---Sub TextBox1_Change()

    TextBox1.Text = Replace(TextBox1.Text , '@' , '')

End Sub

--- Termina codice ---

Questo ad esempio elimina la chiocciola....

Oppure potresti intercettare l'evento KeyPress ed impedire che certi caratteri vengano passati alla textbox

vaillant86:
Grazie, quindi posso fare a meno di gb.pcre. Un'altra cosa, ho visto nella documentazione di Replace che la sintassi è

Replace(textbox, "stringadasostituire", "stringasostitutiva")

Siccome i caratteri che vorrei evitare sono 10, devo fare 10 righe diverse o posso concatenare le varie "stringadasostituire"?

Attualmente ho fatto così

--- Codice: gambas ---
  TextBox_Name.Text = Replace(TextBox_Name.Text, "@", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, "#", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, "!", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, "~", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, "(", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, ")", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, "{", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, "}", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, "[", "")
  TextBox_Name.Text = Replace(TextBox_Name.Text, "]", "")

--- Termina codice ---

ma immagino ci sia un modo più pulito

vuott:

--- Citazione da: vaillant - 06 Settembre 2011, 21:26:50 ---ma immagino ci sia un modo più pulito

--- Termina citazione ---

...forse con qualche ciclo FOR ed utilizzando i codici chr(nn),  dato che molti di quei caratteri che non ti servono sono uniti in 3 - 4 gruppi, infatti - per esempio:

58   :
59   ;
60   <
61   =
62   >
63   ?
64   @

Ceskho:
Forse è meglio se usi l'evento keyPress intercettando i valori del tasto premuto. Credevo fossero di meno i caratteri. Prova con:


--- Codice: gambas ---PUBLIC SUB TextBox_Name_KeyPress()

  SELECT Key.text
    CASE "@","#","!","~","(",")","{","}","[","]",
      STOP EVENT
  END SELECT
 
END
--- Termina codice ---

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa