Во многих случаях нам нужно удалить последний символ StringBuilder/StringBuffer. Например, с учетом int[]{1,2,3}
, для реализации метода String toString(int[] a)
, контактирующего с каждым элементом с разделителем запятой. Выход должен быть 1,2,3
, без хвостовой запятой.deleteCharAt или setLength, в каком направлении лучше удалить последний символ из StringBuilder/StringBuffer
Мы можем легко написать цикл:
int[] nums = new int[]{1,2,3,4,5};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < nums.length; i++) {
sb.append(nums[i]);
sb.append(",");
}
//here we need to remove the tailing ','
но всегда нам нужно удалить хвостохранилища ','
. Есть два способа реализации его:
sb.deleteCharAt(sb.length() - 1);
и
sb.setLength(sb.length() - 1);
Какой рекомендуется? Зачем?
ПРИМЕЧАНИЕ: Я знаю, что делает Arrays.toString
. Это всего лишь пример, чтобы описать мой вопрос, может быть, не совсем правильно. Это не обсуждение конкатенации строк, а лучшие практики StringBuffer/StringBuilder.
Что случилось с 'Arrays.toString (nums)'? а затем удалите первый и последний символы. Но хороший вопрос об общем использовании. –
@tintinmj: Соглашайтесь с вами. Я отредактировал свой вопрос. –
Я выяснил очень близкий вопрос к вам на [CodeReview.SE] (http://codereview.stackexchange.com/questions/37309/perform-instruction-in-loop-every-time-except-the-last-time). –