Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-11-2010, 20:56   #1
Simox88
Junior Member
 
Iscritto dal: Nov 2010
Messaggi: 17
[VB.NET] Colorare stringa contenuta fra due caratteri in una RichtTextBox

Salve,

Come da titolo, sto cercando, cercando su internet e su questo forum, di colorare una stringa in un componente RichTextBox.

Ora vi spiego meglio la mia situazione:

Io avrei un componente RichtTextBox vuota e riempita da codice, nel momento in qui l'utente avvia il forum.

Vorrei che, in quel preciso momento, al caricamento del forum, il componente colori una stringa presente fra due caratteri, decisi ovviamente da me.

Non saprei se mi sono ben spiegato, ma come potrei fare per risolvere il problema?
Simox88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 10:46   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Semplice.
Soluzione veloce veloce, anche se ammetto non sia il massimo dell'eleganza.
Poniamo di avere una RTB con del testo, e di voler colorare in rosso la stringa compresa tra la prima e la seconda occorrenza del carattere "*" :

Codice:
        Dim inizio As Integer = -1
        Dim fine As Integer = -1
        Dim strL As Integer = 0
        For i As Integer = 0 To RTB.TextLength
            If RTB.Text(i) = "*" And inizio = -1 Then
                inizio = i + 1
            ElseIf RTB.Text(i) = "*" And inizio > -1 Then
                fine = i
                Exit For
            End If
        Next
        strL = fine - inizio
        RTB.Select(inizio, strL)
        RTB.SelectionColor = Color.Red
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 15:59   #3
Simox88
Junior Member
 
Iscritto dal: Nov 2010
Messaggi: 17
Ho provato con il tuo codice, colora solo la prima occorrenza che trova, di caratteri presenti tra due asterischi ( non so se mi spiego bene )

Ho anche provato a modificare il codice, ma niente, non mi viene restituito il risultato che io vorrei.

In poche parole, non so se mi sono spiegato bene, se vuoi magari rispiego, vorrei che mi colorasse, non solo la prima stringa fra i due asterischi che trova, ma anche le altre, e possibilmente anche gli asterischi, cmq, grazie per aver risposto.

Ultima modifica di Simox88 : 16-11-2010 alle 16:02.
Simox88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 22:55   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Ma infatti io l'avevo detto che colorava solo la Prima Occorrenza.
E nel post d'apertura non sei stato certo esaustivo.
Quello che chiedi non è poi così scontato. Se ad esempio abbiamo una stringa tipo :

*123*456*789*ABC*DEF*

Quale deve essere il risultato ?
Perchè se vuoi tutte le occorrenze, come dici tu, alla fine tutta la stringa sarà rossa, e non ne vedo l'utilità.

Oppure si potrebbe interpretare come "tutte le occorrenze non consecutive", e in quel caso avrei 2 sotto-casi :

1. Occorrenze non-consecutive-dispari :
*123*456*789*ABC*DEF*

2. Occorrenze non-consecutive-pari :
*123*456*789*ABC*DEF*

3. Oppure, oltre ai caratteri di demarcazione (*) esistono spazi tra una parola e l'altra, e la stringa da analizzare è sempre e solo di questo tipo :
123 *456* 789 *ABC* DEF
...

Come vedi la soluzione non è poi così ovvia.
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2010, 12:05   #5
Simox88
Junior Member
 
Iscritto dal: Nov 2010
Messaggi: 17
Scusa, hai ragione, infatti nel mio primo messaggio mi sono spiegato male.

Il fatto è che io avrei bisogno di colorare del codice html.

In poche parole vorrei fare quello che applicano gran parte degli editor al testo ( non so se mi spiego ).

Ho provata anche in alcuni modi a farlo ( mi dispiace ma non ho più il codice precedentemente provato ), ma non ho ottenuto nessun risultato.
Simox88 è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2010, 19:07   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
L'unica cosa che puoi fare, dato che non hai più nemmeno una linea di codice, è andare per esempi.
Posta alcune stringhe-tipo iniziali e la relativa formattazione desiderata ( come ho fatto io nel post precedente )...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2010, 22:47   #7
Simox88
Junior Member
 
Iscritto dal: Nov 2010
Messaggi: 17
Più che altro, dovrei rappresentare del codice html, come alcuni editor html lo colorano, in questo modo:

<html>
<head>
<title>Titolo</title>
<body>
testo testo testo
</body>
</html>

In poche parole dovrei colorare tutte le stringe contenuti fra il carattere < e >.
Simox88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2010, 11:17   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da Simox88 Guarda i messaggi
Più che altro, dovrei rappresentare del codice html, come alcuni editor html lo colorano, in questo modo:

<html>
<head>
<title>Titolo</title>
<body>
testo testo testo
</body>
</html>

In poche parole dovrei colorare tutte le stringe contenuti fra il carattere < e >.
Eh, no.
La fai troppo semplice.

Potresti lavorarci con :
Codice:
        Dim tagHtml As String = "<html>"
        RichTextBox1.SelectionStart = RichTextBox1.Find(tagHtml)
        RichTextBox1.SelectionLength = tagHtml.Length
        RichTextBox1.SelectionColor = Color.Blue
Ma devi prevedere anche i casi particolari, come questo :

Codice:
<h1>Questo <html> non dovrebbe essere colorato</h1>
Non è così immediato come pensi...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

Ultima modifica di MarcoGG : 18-11-2010 alle 11:29.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2010, 13:09   #9
Simox88
Junior Member
 
Iscritto dal: Nov 2010
Messaggi: 17
Più che altro io avevo semplicemente pensato di colorare tutte le occorrente di caratteri fra il carattere < e > per evitare di scrivere direttamente tutti i tag html da colorare ( che sono tanti, e nemmeno so se li so tutti ).

Non so, te cosa mi consigli, sapendo quello che ti ho detto?
Simox88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2010, 13:24   #10
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Inizia con lo studio delle Regex ( Regular Expressions ). Saranno sicuramente utili allo scopo...
Personalmente non ho mai avuto la necessità di fare niente del genere, perciò non ho codice "pronto all'uso" da suggerire...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2010, 14:17   #11
Simox88
Junior Member
 
Iscritto dal: Nov 2010
Messaggi: 17
Ok, grazie, ci proverò
Simox88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2010, 23:11   #12
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12936
E' un quesito da cui possono nascere spunti interessanti.

Bisognerebbe creare un piccolo parser, usando un automa a stati finiti ed uno stack ce la potresti fare.

Supponiamo di voler colorare tutti i tag che siano correttamente chiusi, ovvero che compaiono a coppia (<tag>qualcosa</tag>).

Faremo uso di uno stack di code. Ovvero faremo una pila di questo tipo:

|___| <- top dello stack
|___|
|___|
|___|

I cui elementi saranno "code" di caratteri (quelli che incontriamo).

Esempio, incontriamo le parole "asd" e "bla"

Il nostro stack sarà così fatto:

|[alb] | <- top dello stack
|[dsa]|

(le code crescono verso sinistra, il primo della coda è a destra)

A questo punto possiamo fare una cosa di questo tipo:

Chiamiamo S lo stack e Q la coda di caratteri corrente.

Stato 0 => stato iniziale
  • se leggo '<': creo una nuova coda Q e passo allo stato 1
  • altrimenti rimango nello stato 0

Stato 1 => letto '<'
  • se leggo '>' aggiungo la coda Q sullo stack, vai a Stato0
  • se leggo '/' vai a Stato2
  • altrimenti aggiungi il carattere alla coda Q, rimani in Stato1

Stato 2 => Q è il top dello stack
  • se il primo carattere nella coda è uguale a quello letto in input: rimuovo il carattere dalla coda.
  • se leggo '>' e la coda è vuota: rimuovo la coda corrente Q dal top dello stack ed evidenzio i tag, passo allo stato 0.
  • se leggo '>' ma la coda non è vuota significa che c'è un errore di sintassi, non devo evidenziare nulla, a quel punto il riconoscimento è compromesso (bisognerebbe gestire questa situazione per portare il parser ad uno stato utilizzabile).

Esempio con la stringa:

"prova <asd>questo <html> va una bomba</asd>"

Chiaramente si rimane nello stato0 fino a quando non incontro il primo '<'.
I successivi caratteri (a, s, d) verranno aggiunti alla coda Q, risultando Q=[d, s, a] dove a è il primo della coda.
Leggendo '>' Q viene aggiunto allo stack.

La cosa si ripete per <html>, quindi avremo uno stack con 2 elementi:

[l, m, t, h] <-- top dello stack
[d, s, a]

A questo punto è evidente che quando incontriamo l'ultimo tag </asd> troveremo un errore, perché ci aspetteremmo di trovare </html>.

Quindi in questo caso nessuno dei tag verrà evidenziato.

Viceversa togliendo <html> dal mezzo della stringa, avremmo che lo stack contiene solo [d, s, a] e dopo aver letto la sequenza "</" ci troveremmo nello Stato2, per cui:

Leggiamo 'a', Q diventa [d, s]
Leggiamo 's', Q diventa [d]
Leggiamo 'd', Q diventa [] (coda vuota)

Leggendo '>' accettiamo perché la coda è vuota ed evidenziamo i tag.

Ora chiaramente questa cosa voleva essere di esempio, ma credo si possa facilmente adattare per il tuo problema, per quanto comunque tutto ciò non sia così banale.

Stesso stabilire in quale caso vuoi evidenziare i tag può cambiare di molto le cose.

Domani provo a divertirmi un po' implementando ciò che chiedi .

Ultima modifica di WarDuck : 18-11-2010 alle 23:17.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
JMEV SC01, la supersportiva cinese da 30...
Tesla Model 3 superata per la prima volt...
AMD ha già risolto la crisi della...
La “batteria di Baghdad” funziona davver...
Pannelli solari al contrario? Non propri...
Google Gemini si espande: arrivano le es...
Mercato TV: la leadership di Samsung reg...
L'AI che lavora 100 volte più vel...
LIDAR, battaglia finale: MicroVision met...
Il 2025 è stato l'anno di BYD: +2...
L'IA enterprise entra nella fase decisiv...
Il tiktoker Khaby Lame cede la sua socie...
Apple Pencil Pro scende a 122€ su Amazon...
Ring in forte sconto su Amazon: videocit...
Blink torna a fare sul serio: Mini 2K+ c...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v