2017-06-21 155 views
-2

我有以下代碼。如何在字符串的字符串處插入字符串?

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; 

}

我不想在ds.empty重寫相同的代碼()括號內。 有沒有更好的方法來處理這個問題?

+0

爲什麼不使用'名單行'?那麼如果你想* k-th *就像是一個簡單的'線[k]' –

+0

[.NET StringBuilder preappend a line]的可能重複(https://stackoverflow.com/questions/21861366/net-stringbuilder-preappend- a-line) –

+0

你到底在問什麼? – trashr0x

回答

3

只要把代碼中的自己的方法:

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; 
} 

然後你就可以通過這個方法的調用替換您的當前StringBuilder代碼

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

我會工作,如果兩個字符串建設者是相同的,但如果ds是空的,我正在編寫相同的代碼附加額外的字符串(sb.append('464sdfsdfsdfggfdkjkjkjkj');)並將此新的字符串生成器傳遞給函數2。 –

+0

啊,我明白了,我的錯。我用一個額外的參數「p_appendExtraStrings」更新了我的代碼。只有當布爾值爲真時,纔會附加額外的值。所以第一個電話是「假」,第二個電話是「真」。我希望這種糾正能夠解決你的問題! – Yannick

+0

它會正常工作,但仍然GetString()函數被調用2次。時間複雜度與之前的代碼相同。有另一種方法可以減少時間複雜性嗎? –