Как удалить последнюю строку из строителя строк? - PullRequest
0 голосов
/ 27 сентября 2018

Я динамически создаю строку

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

Я хочу удалить последний AND в конце цикла.Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

На самом деле я думаю, что StringBuilder не поддерживает удаление в общем случае.Он был разработан для построения строки.

Я рекомендую вам просто не добавлять "И" в конструктор:

StringBuilder buf = new StringBuilder();

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

Это лучший выбор, потому чточтобы удалить эту часть, вы должны сделать копию строки.

0 голосов
/ 27 сентября 2018

Да.Вы знаете, какова ширина " AND ", поэтому просто используйте StringBuilder#delete:

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

Или, если вы собираетесь превратить его в String, используйтеStringBuilder#substring:

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