如何从 stringbuilder 中删除最后一个字符串?
How to remove the last string from a stringbuilder?
我正在动态创建一个字符串
StringBuilder preparedStatement = new StringBuilder();
states.keySet().forEach(key -> preparedStatement
.append(key)
.append(" = ")
.append(":")
.append(key)
.append(" AND "));
我想删除循环末尾的最后一个 AND
。这可能吗?
是的。你知道 " AND "
有多宽,所以只需使用 StringBuilder#delete
:
preparedStatement.delete(preparedStatement.length() - " AND ".length(),
preparedStatement.length()
);
或者,如果您打算将它变成 String
,请使用 StringBuilder#substring
:
String result = preparedStatement.substring(0,
preparedStatement.length()
- " AND ".length()
);
其实我觉得StringBuilder
一般情况下是不支持删除的。它旨在构建一个字符串。
我建议您不要将 " AND " 添加到构建器中:
StringBuilder buf = new StringBuilder();
if(someCheck)
buf.add(" AND ");
这是最好的选择,因为要删除这部分,你必须做一个字符串复制。
我正在动态创建一个字符串
StringBuilder preparedStatement = new StringBuilder();
states.keySet().forEach(key -> preparedStatement
.append(key)
.append(" = ")
.append(":")
.append(key)
.append(" AND "));
我想删除循环末尾的最后一个 AND
。这可能吗?
是的。你知道 " AND "
有多宽,所以只需使用 StringBuilder#delete
:
preparedStatement.delete(preparedStatement.length() - " AND ".length(),
preparedStatement.length()
);
或者,如果您打算将它变成 String
,请使用 StringBuilder#substring
:
String result = preparedStatement.substring(0,
preparedStatement.length()
- " AND ".length()
);
其实我觉得StringBuilder
一般情况下是不支持删除的。它旨在构建一个字符串。
我建议您不要将 " AND " 添加到构建器中:
StringBuilder buf = new StringBuilder();
if(someCheck)
buf.add(" AND ");
这是最好的选择,因为要删除这部分,你必须做一个字符串复制。