PDA

View Full Version : [c#]Aggiungere caratteri ad una stringa


RaouL_BennetH
08-11-2010, 09:01
Ciao a tutti :)

Ho una query scalare che mi restituisce un valore intero, in base a questo valore devo aggiungere dei caratteri ad una stringa, per es.:



int counter = (int)myScalarQuery();
string s = "";


if(counter > 0)
{
for(int i = 0; i < counter; i++)
{
s = "X";
}
}



Mi succede perņ questo:

anche se il valore č zero, mi aggiunge comunque un carattere.

Come mai ?

Grazie :)

RaouL.

gugoXX
08-11-2010, 13:21
Il codice che hai scritto non aggiunge caratteri.
Dovresti cambiare il codice, ma tieni conto che usare l'operatore + sulle stringhe non e' affatto efficiente, quindi gia' che lo cambi, cambia in meglio e trova un'altra soluzione
(Ad esempio c'e' un bel costruttore che accetta in input un carattere ed un intero...)

Nonstante tutto non si capisce perche' dovresti avere il problema che hai enunciato.
Immagino che counter non sia zero quando invece pensi che lo sia.

RaouL_BennetH
08-11-2010, 13:30
Il codice che hai scritto non aggiunge caratteri.
Dovresti cambiare il codice, ma tieni conto che usare l'operatore + sulle stringhe non e' affatto efficiente, quindi gia' che lo cambi, cambia in meglio e trova un'altra soluzione
(Ad esempio c'e' un bel costruttore che accetta in input un carattere ed un intero...)

Nonstante tutto non si capisce perche' dovresti avere il problema che hai enunciato.
Immagino che counter non sia zero quando invece pensi che lo sia.

Infatti non era zero :muro:

per quanto riguarda l'aggiunta, ho utilizzato adesso sia uno stringbuilder sia un string.Insert. In che modo potrei valutare la miglior efficienza di uno dei due ?

gugoXX
08-11-2010, 15:50
Infatti non era zero :muro:

per quanto riguarda l'aggiunta, ho utilizzato adesso sia uno stringbuilder sia un string.Insert. In che modo potrei valutare la miglior efficienza di uno dei due ?

Puoi provare facendo un test case ad hoc, cercando di creare una stringa da qualche milionata di caratteri e osservando chi vince.

Comunque se si deve fare qualcosa di simile a sopra, continuo a propendere per

s = new string('X', counter);

al posto di tutto il for.