Richtextbox trova e sostituisci in automatico

venerdì 01 agosto 2008 - 22.26

the scorpion Profilo | Newbie

Giorno..Sito meraviglioso,grazie per il servizio che offrite.
Ecco il mio problemino:
Vorrei far si che nel mio programma cliccando su un button automaticamente venga ricercata una parola nella richtextbox e sostituita con un altra per quante parole ci sono..
Ad esempio se nel testo ci sono 10 "Ciao", cliccando sul button questi "ciao" vengono automaticamente sostituiti con un altra parola ad esempio "buongiorno"..senza che venga richiesto nulla all'utente.
Prima trovo [Richtextbox1.find(ciao)] e poi devo sostituire con la parola "buongiorno"..

Il codice che avevo pensato è questo(di una semplicità quasi assurda):
------------------------------------
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

-----------------------------------
Pero non funge,cioè quando clicco sul button,non sostituisce nulla.

Come posso fare???
Mi scrivereste il codice che di sicuro è corto??
Grazie mille

aiedail92 Profilo | Expert

Ciao

Una cosa molto basilare che potresti fare è questa:

tuaRichTextBox.Text = tuaRichTextBox.Text.Replace("ciao", "buongiorno")

che però è case-sensitive (quindi trova solo l'esatta parola "ciao", in minuscolo)

In alternativa puoi usare questo metodo, che consente di sostituire ignorando le maiuscole-minuscole, usando le regex:

Dim newText As String = System.Text.RegularExpressions.Regex.Replace(tuaRichTextBox.Text, _ "\bciao\b", "buongiorno", RegexOptions.IgnoreCase) tuaRichTextBox.Text = newText

Luca

P.S. Ho adattato il codice per vb.net

freeteo Profilo | Guru

ciao,
il replace è da fare sulla stringa che compone il testo, quindi nel tuo caso la proprietà "Text" o "Rtf" della RichTextBox:
string parola = "ciao"; if (!string.IsNullOrEmpty(richTextBox1.Rtf)) richTextBox.Rtf = richTextBox.Rtf.Replace(parola, "matteo"); else richTextBox.Text = richTextBox.Text.Replace(parola, "matteo");
o una cosa similare adattata alla tua esigenza.

Questo è semplice dato che vuoi una parola "fissa" che già conosci, per qualcosa di più complesso devi pensare alle Regex (Regular Expression)...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

the scorpion Profilo | Newbie

Grazie mille ad entrambi mi avete fornito le informazioni che desideravo..grazie mille!!!

aiedail92 Profilo | Expert

Di niente

Accetta una risposta per chiudere il thread

Luca

the scorpion Profilo | Newbie

ok grazie a tutti..
ora che vedo bene avevo gia usato quei codici che avete postato prima ma non so per quale ragione mi davano dei problemi boo,comunque ho risolto in altra maniera !!

aiedail92 Profilo | Expert

Se intendi il codice che avevi postato nel primo messaggio, quello non funzionava per questo motivo: in .net, le stringhe sono oggetti immutabili, per cui quando usi il metodo Replace su una stringa, non viene modificata la stringa stessa, ma ne viene creata una nuova (che è il valore di ritorno della funzione). Quindi per modificare effettivamente il testo del controllo devi assegnare il nuovo valore alla proprietà, come ti abbiamo fatto vedere nell'esempio:

tuaRichTextBox.Text = tuaRichTextBox.Text.Replace("ciao", "buongiorno")

Luca

the scorpion Profilo | Newbie

sisi,no non era quello il codice...quello l'ho scritto veloce ieri notte qui sul forum e ho sbagliato...diciamo che quelle cose le so ..grazie lo stesso!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5