2017-06-21 2 views
-2

J'ai le code suivant.Comment insérer la ficelle au stringbuider à la ligne perticular?

Dataset function1(){ 
StringBuilder sb = new StringBuilder(); 
sb.append('abcd'); 
sb.append('efgh'); 
for(int i=0 ; i< 8; i++){ 
    sb.append('ijkl'); 
    sb.append('monop'); 
    sb.append('ijkl'); 
    sb.append('monop'); 

} 
Dataset ds = function2(sb); 
if(ds.isempty(){ 
    StringBuilder sb = new StringBuilder(); 
    sb.append('abcd'); 
    sb.append('efgh'); 
    for(int i=0 ; i< 8; i++){ 
     sb.append('ijkl'); 
     sb.append('monop'); 
     sb.append('ijkl'); 
     sb.append('464sdfsdfsdfggfdkjkjkjkj'); 
     sb.append('monop'); 

    } 
    ds = function2(sb); 

}) 
return ds; 

}

Je ne veux pas réécrire même code entre parenthèses ds.empty(). Y a-t-il une meilleure façon de gérer cela?

+0

Pourquoi ne pas utiliser 'Liste des lignes '? alors, si vous voulez * k-th * comme c'est un facile 'lignes [k]' –

+0

duplication possible de [.NET StringBuilder preappend une ligne] (https://stackoverflow.com/questions/21861366/net-stringbuilder-preappend- a-line) –

+0

qu'est-ce que vous demandez exactement? – trashr0x

Répondre

3

Il suffit de mettre le code dans une propre méthode:

public StringBuilder GetString(boolean p_appendExtraStrings) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.append('abcd'); 
    sb.append('efgh'); 
    for(int i = 0 ; i < 8; i++) 
    { 
     sb.append('ijkl'); 
     sb.append('monop'); 
     sb.append('ijkl'); 
     if(p_appendExtraStrings) 
     { 
      sb.append('464sdfsdfsdfggfdkjkjkjkj'); 
      sb.append('monop'); 
     } 
    } 
    return sb; 
} 

Et vous pouvez remplacer votre code actuel StringBuilder par un appel de cette méthode

Dataset function1() 
{ 
    Dataset ds = function2(GetString(false)); 
    if(ds.isEmpty() 
    { 
     ds = function2(GetString(true)); 
    } 
    return ds; 
} 
+0

Je travaillerais si les deux constructeurs de chaînes étaient identiques mais si ds est vide, j'écris le même code avec une chaîne supplémentaire (sb.append ('464sdfsdfsdfggfdkjkjkjkj');) et je passe ce nouveau générateur de chaînes à function2. –

+0

Ah je vois, ma faute. J'ai mis à jour mon code avec un paramètre supplémentaire "p_appendExtraStrings". Les valeurs supplémentaires ne seront ajoutées que si le booléen est vrai. Donc le premier appel est avec "faux" et le second avec "vrai". J'espère que cette correcture résoudra votre problème! – Yannick

+0

Cela fonctionnera correctement mais la fonction GetString() est appelée 2 fois. La complexité temporelle est la même que celle du code précédent. Existe-t-il une autre méthode permettant de réduire la complexité du temps? –