'inizializzo la stringa da mettere nella clipboard con l'header, per ora senza settare gli indici. Al loro posto metto degli zeri, in modo da fissare una lunghezza per la stringa
Dim a As String = "Version:0.9" + vbCrLf + "StartHTML:000000" + vbCrLf + "EndHTML:000000" + vbCrLf + "StartFragment:000000" + vbCrLf + "EndFragment:000000" + vbCrLf
'ora aggiungiamo alla stringa da copiare l'html necessario.
'ottengo la dimensione della stringa convertendo la stringa in un array di byte con la codifica UTF8 e leggendone la dimensione
Dim headerSize As Integer = System.Text.Encoding.UTF8.GetBytes(a).Length
a += tabella
'ottengo la dimensione della stringa convertendo la stringa in un array di byte con la codifica UTF8 e leggendone la dimensione
Dim totalSize As Integer = System.Text.Encoding.UTF8.GetBytes(a).Length
'l'HTML inizia appena dopo l'header e finisce alla fine della clipboard,
'quindi abbiamo l'indice di inizio in headerSize e quello di fine in totalSize.
'A questo punto posso sostituire gli zeri con i valori trovati, facendo attenzione che questi siano di esattamente 6 cifre come i 6 zeri
'(utilizzando padLeft sulla stringa la porto ad dimensione di 6 caratteri aggiungendo zeri a sinistra)
Dim inizio As String = headerSize.ToString().PadLeft(6, "0")
Dim fine As String = totalSize.ToString().PadLeft(6, "0")
'la prima occorrenza degli zeri (per StartHTML) la sostituisco con l'indice di inizio
a = replaceFirst(a, "0000000", inizio)
'la seconda (EndHTML) con l'indice di fine
a = replaceFirst(a, "0000000", fine)
'stessa cosa per StartFragment e EndFragment
a = replaceFirst(a, "0000000", inizio)
a = replaceFirst(a, "0000000", fine)
Clipboard.SetText(a, TextDataFormat.Html)