PDA

View Full Version : [C] Intercettare sottostringa in stringa


renton92
16-03-2011, 19:28
Ragazzi ho una richiesta un pò particolare:
devo sostituire dei tag con dei codici specifici ma per uno in particolare vorrei fare qualcosa in più.
I tag sono per es. b, /b etc. E per questi problemi non ce ne sono.
Invece ho dei tag tipo:
(url=indirizzo)Testo(/url)
e il risultato deve essere: Testo (indirizzo)

Volevo sapere se è possibile riconoscere una sottostringa particolare come (url=%s)%s(/url)
Help!

PS: con al posto delle parentesi tonde, le parentesi quadre

Accetto anche consigli su un'idea di implementazione più esile della mia.
Io per ora carico tutti i codici in una lista e scansiono il testo (una volta per ogni codice in lista) andando a sostituire le parti opportune.

Grazie in anticipo

banryu79
18-03-2011, 09:12
Invece ho dei tag tipo:
(url=indirizzo)Testo(/url)
e il risultato deve essere: Testo (indirizzo)

Volevo sapere se è possibile riconoscere una sottostringa particolare come (url=%s)%s(/url)
Help!

Sai cosa sono le regex (regular expressions)?
Prova a informarti, immagino siano implementate anche per il linguaggio C.


Accetto anche consigli su un'idea di implementazione più esile della mia.
Io per ora carico tutti i codici in una lista e scansiono il testo (una volta per ogni codice in lista) andando a sostituire le parti opportune.

Un modo per scorrere il testo una volta sola e fare tutte le sostituzioni potrebbe essere questo:
- hai una struttura che funge da mappa, una entry della mappa è data dall'accoppiata (chiave/valore) tagDaSostituire/codiceSpecifico.
Scorri il testo un token (parola) alla volta e lo confronti con il set delle chiavi della mappa (i tagDaSostituire).
Se trovi un match sai che devi eliminare quel token dal testo per sostituirlo con il valore della mappa associato al tagDaSostituire (cioè il codiceSpecifico).

Questo almeno per tutte le sostituzioni "semplici", cioè quelle basate sul riconoscimento e la sostituzione di un singolo token (le fai tutte con una sola passata del testo); per sostituzioni più complesse bisogna pensare ad altro (regular expression, ad esempio).