Что эквивалентно методу C # этому базовому методу Java? - PullRequest
2 голосов
/ 22 февраля 2009

очень простой вопрос здесь (больше, чтобы подтвердить мои мысли, чем что-либо) ...

Java-метод: [StringBuffer.Delete] 1;

[1]: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html#delete(int, int)

Java Code: sb.delete(sb.length()-2, sb.length());  

C# (not sure if this is right):  
StringBuilder sb = new StringBuilder();
....
sb.Remove(sb.Length - 2, sb.Length - (sb.Length - 2));

Причина, по которой я не уверен, заключается в документации метода удаления Java. Это говорит

Подстрока начинается с указанного начать и распространяется на персонажа в конец индекса - 1 или до конца StringBuffer, если такого символа нет существует

Я просто не уверен в этом конец - 1 бит этой цитаты ... и если бы я все испортил

ура :) 1022 *

править: Хех. я знал, что он удаляет последние 2 символа из строки, но я сохранял точное преобразование, потому что мой подробный код. :)

Ответы [ 3 ]

2 голосов
/ 22 февраля 2009

Чтобы удалить последние 2 символа, вы должны написать:

sb.Remove(sb.Length - 2, 2);
1 голос
/ 22 февраля 2009

Да, это правильно. «End - 1» означает, что если вы вызываете delete (2, 8), он удаляет символы с индексами от 2 до 7, но не символ с индексом 8.

Итак, ваш код правильный. Однако некоторые математические навыки здесь пригодятся, и вы увидите, что:

x - (x - 2)
= x - x + 2
= (x - x) + 2
= 0 + 2
= 2

Создание кода:

sb.Remove(sb.Length - 2, 2);

Другой способ сделать то же самое будет:

sb.Length -= 2;
0 голосов
/ 22 февраля 2009

В вызове delete в Java он удаляет символ от начала до конца-1. Вместо этого вызов C # удаляет строку из начала, как бы долго вы ни указывали.

...