Confronto stringhe

giovedì 06 marzo 2008 - 16.58

memmo77 Profilo | Expert

Salve. Vorrei in vb net mettere a confronto due stringhe, recuperare le differenze e sommarle alla prima, ad esempio:

stringa1 = abc

stringa2 = a1bcd

stringa3 = gf

totale = abc1dgf


Questo in pratica mi servirebbe. Spero di essermi spiegato. Grazie

pozzoli.samuele Profilo | Senior Member




Oddio cosa vuoi fare!!!!

Allora, direi che prendi la prima stringa e la copi in un buffer....

Poi ti metti a scorrere la seconda carattere per carattere, confrontandoli con i caratteri (uno ad uno) del buffer.

Se il carattere c'è già lo butti, altrimenti ci copi quello della stringa che non c'è.

Questo finchè non hai finito le stringhe.

Curiosa applicazione, però! Sarei curioso di sapere che destinazione ha!



Good luck. Se ti serve codice, ci provo in vb.

freeteo Profilo | Guru

ciao,
come ti suggerisce emanuele, puoi usare un ciclo, pero' prima ti conviene accodare tutte le stringhe cosi' giri sul risultato:

string stringaRisultante = "..."; string stringa = string.Empty; foreach (char c in stringaRisultante) { if (!stringa.Contains(c)) stringa += c; }


Se poi hai Linq ancora meglio, ti fai il distinct sulla stringa, dato che è un IEnumerable<char>
...new string(stringaRisultante.Distinct().ToArray());


ps: il codice è in c#, ma la conversione è sicuramente facile da fare...

ciao.

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

memmo77 Profilo | Expert

Non è che sia proprio così semplice. Devo mettere a confronto, due cose di questo tipo:


<style type="text/css">.a4{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:0pt;padding-top:0pt;padding-right:0pt;padding-bottom:0pt;border-collapse:collapse}.a8{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:14pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:left;writing-mode:lr-tb;vertical-align:Top;color:Black;word-wrap:break-word}.a12{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:12pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:left;writing-mode:lr-tb;vertical-align:Top;color:Black;word-wrap:break-word}.a16{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:12pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:left;writing-mode:lr-tb;vertical-align:Top;color:Black;word-wrap:break-word}.a20{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:11pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:left;writing-mode:lr-tb;vertical-align:Top;color:Black;word-wrap:break-word}.a24{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:11pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:left;writing-mode:lr-tb;vertical-align:Top;color:Black;word-wrap:break-word}.a26{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:0pt;padding-top:0pt;padding-right:0pt;padding-bottom:0pt;border-collapse:collapse}.a30{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:8pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:left;writing-mode:lr-tb;vertical-align:Top;color:Black;word-wrap:break-word}.a32{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:0pt;padding-top:0pt;padding-right:0pt;padding-bottom:0pt;border-collapse:collapse}.a32_c{border:1pt None Black;border-left-style:Solid;border-top-style:Solid;border-right-style:Solid;border-bottom-style:Solid;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:8pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:Center;writing-mode:lr-tb;vertical-align:Middle;color:Black;word-wrap:break-word}.a46{border:1pt Solid Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:8pt;font-weight:700;text-decoration:Underline;direction:LTR;unicode-bidi:Normal;text-align:Center;writing-mode:lr-tb;vertical-align:Middle;color:Black;word-wrap:break-word}.a49{border:1pt Solid Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:6pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:Center;writing-mode:lr-tb;vertical-align:Middle;color:Black;word-wrap:break-word}.a35{border:1pt None Black;border-left-style:Solid;border-bottom-color:Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:7pt;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:left;writing-mode:lr-tb;vertical-align:Top;color:Black;word-wrap:break-word}.a38{border:1pt None Black;border-left-style:None;border-right-style:Solid;border-bottom-color:Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:7pt;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:left;writing-mode:lr-tb;vertical-align:Top;color:Black;word-wrap:break-word}.a54{border:1pt None Black;border-left-style:Solid;border-left-width:1pt;border-right-style:Solid;border-right-width:1pt;border-bottom-color:Black;border-bottom-width:1pt;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:7pt;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:Right;writing-mode:lr-tb;vertical-align:Middle;color:Black;word-wrap:break-word}.a3{border:1pt None Black;background-color:Transparent;background-repeat:Repeat;padding-left:2pt;padding-top:2pt;padding-right:2pt;padding-bottom:2pt;font-style:Normal;font-family:Arial;font-size:7pt;font-weight:700;text-decoration:None;direction:LTR;unicode-bidi:Normal;text-align:Left;writing-mode:lr-tb;vertical-align:Top;color:Black;}.r1{HEIGHT:100%;WIDTH:100%}.r2{HEIGHT:100%;WIDTH:100%;overflow:hidden}.r3{HEIGHT:100%}.r4{border-style:none}.r5{border-left-style:none}.r6{border-right-style:none}.r7{border-top-style:none}.r8{border-bottom-style:none}.r10{border-collapse:collapse}.r9{border-collapse:collapse;table-layout:fixed}.r11{WIDTH:100%;overflow-x:hidden}.r12{position:absolute;display:none;background-color:white;border:1px solid black;}.r13{text-decoration:none;color:black;cursor:pointer;}</style>



Praticamente ho tanti style che mi arrivano, ma di questio devo prendere solo le differenze. Solo che non basta un carattere alla volta. Cioè, se nel secondo file fosse presente lo stesso codice con in +:

.r14{text-decoration:none;color:black;cursor:pointer;}

Devo aggiungere tutto, non solo .r14

Questo purtroppo è lo style che mi esporta reporting service in html. Si tratta di + report ed ognuno di essi ha il suo style che può distinguersi dagli altri o no.
So che se lasciassi il tutto in html, funzionerebbe anche riportando tutto (ho fotto le prove), ma aimè ... devo poi rinominarlo in .doc . E quando lo faccio, quelli che anno la parte del loro style sistemato funzionano gli altri ....
Spero di aver spiegato meglio cosa cerco. Rigrazie

freeteo Profilo | Guru

ciao,
allora la cosa è sicuraemente piu' complessa, e per fare parsing intelligenti di stringhe ti conviene usare le Regular Expression.
Io avevo usato in passato questa Regex per fare il parsing di fogli css:

(?<classe>[\.|A-z]\w*)?[\ \n\r]*\{(?<stile>.*)}

e torna 2 gruppi, il primo con il n ome della classe e il secondo con lo stile....prova a vedere se ti va bene o se devi adattarla un po, cmq poi girando sui match riesci a fare dei ragionamenti piu precisi sui contenuti.

ps: il mio css pero' aveva gli acapo prima delle classi, mi sa che se lo stile che devi parsare è tutto attaccato come lo hai postato bisogna aggiustare la regex...

ciao.

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

memmo77 Profilo | Expert

Ho risolto in un altro modo. Ho messo quello che mi serviva in harraylist e con arraylist.Contains ho controllato quello che avevo o meno.
Grazie a tutti
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