2012-08-10 110 views
0

我正在使用字符串進行concat操作。我想使用stringbuffer/stringbuilder,因爲它們更有效。要使用StringBuffer進行追加,但使用trim()和toLowerCase()的功能

原始代碼:

List<BDDObject> childlist; 
String newassetReferenceType = new String(); 

for (int i = 0; i < childlist.size(); i++) 
{ 
newassetReferenceType = ((String) childlist.get(i).getValue(IDDConstants.IDD_COMPOUND_ASSET_REF_TYPE_NAME)).toLowerCase().trim().concat(((String) childlist.get(i).getValue(
IDDConstants.IDD_COMPOUND_ASSET_REF_VALUE)).trim()); 

} 

SO我試圖改變它作爲 改變的代碼:

List<BDDObject> childlist; 
StringBuffer newassetReferenceType = new StringBuffer(); 

for (int i = 0; i < childlist.size(); i++) 
{ 
newassetReferenceType = ((String) childlist.get(i).getValue(IDDConstants.IDD_COMPOUND_ASSET_REF_TYPE_NAME)).toLowerCase().trim().append(((String) childlist.get(i).getValue(
IDDConstants.IDD_COMPOUND_ASSET_REF_VALUE)).trim()); 

} 

現在有該修剪()和不能使用toLowerCase()方法的一個錯誤。但我必須使用它們。有人可以告訴我如何獲得trim()和toLowerCase()的優點,並仍然使用StringBuffer。

回答

1

您的解決方案應該可以正常工作。我認爲你的括號只是一點點。在將字符串附加到StringBuffer之前,您應該對字符串執行trim()和toLowerCase()操作。

我重寫了你的代碼,用合適的括號來說明這個概念。隨意重新格式化,並將其放在一行中,但我認爲這樣可讀性更強,不易出錯。

List<BDDObject> childlist; 
StringBuffer newassetReferenceType = new StringBuffer(); 

for (int i = 0; i < childlist.size(); i++) 
{ 
    var value1 = (String) childlist.get(i).getValue(IDDConstants.IDD_COMPOUND_ASSET_REF_TYPE_NAME); 
    var value2 = (String) childlist.get(i).getValue(IDDConstants.IDD_COMPOUND_ASSET_REF_VALUE); 

    newassetReferenceType.Append(value1.toLowerCase().trim()) 
    .append(value2.trim()); 
} 
+0

這是工作,謝謝。 – dev 2012-08-11 08:27:16