2017-06-21 153 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次。时间复杂度与之前的代码相同。有另一种方法可以减少时间复杂性吗? –