0

我正在使用字符串进行连接操作。我想使用 stringbuffer/stringbuilder 因为它们更有效。

原始代码:

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());

}

所以我尝试将其更改为已更改的代码:

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());

}

现在有一个错误,就是不能使用 trim() 和 toLowerCase() 方法。但无论如何我都必须使用它们。有人可以告诉我如何获得 trim() 和 toLowerCase() 的优势并且仍然使用 StringBuffer。

4

1 回答 1

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());
 }
于 2012-08-10T14:38:23.130 回答