Archivi (sola lettura) > Domande tecniche (Gambas 2)
[RISOLTO] Impedire caratteri speciali nella textbox
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
Vai alla versione completa