如何从stringbuilder中删除最后一个字符串?

时间:2018-09-27 02:41:37

标签: java string stringbuilder

我正在动态创建一个字符串

StringBuilder preparedStatement = new StringBuilder();
states.keySet().forEach(key -> preparedStatement
               .append(key)
               .append(" = ")
               .append(":")
               .append(key)
               .append(" AND "));

我想在循环结束时删除最后一个AND。这可能吗?

2 个答案:

答案 0 :(得分:0)

是的。您知道" AND "的宽度,所以只需使用StringBuilder#delete

preparedStatement.delete(preparedStatement.length() - " AND ".length(),
                         preparedStatement.length()
                        );

或者,如果您要将其变成String,请使用StringBuilder#substring

String result = preparedStatement.substring(0,
                                            preparedStatement.length()
                                                - " AND ".length()
                                           );

答案 1 :(得分:0)

实际上,我认为StringBuilder在一般情况下不支持删除。它旨在构建字符串。

我建议您不要在构建器中添加“和”

StringBuilder buf = new StringBuilder();

if(someCheck)
    buf.add(" AND ");

这是最佳选择,因为要删除此部分,您必须进行字符串复制。