Какой метод C # эквивалентен этому базовому методу Java?
-
05-09-2019 - |
Вопрос
здесь действительно простой вопрос (скорее для подтверждения моих мыслей, чем для чего-либо еще)...
Java - метод :[Буфер строк.Удалить]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 delete.В нем говорится
Подстрока начинается с указанного запуск и распространяется на символ индекс конце - 1 или к концу StringBuffer если никакой такой символ не существует
Я просто не слишком уверен в этом конец - 1 немного из этой цитаты ..и если бы я, возможно, все испортил.
ваше здоровье :)
Редактировать:Хех.я знал, что это удаляло последние 2 символа из строки, но я сохранял точность преобразования, следовательно, мой подробный код.:)
Решение
Чтобы удалить последние 2 символа, которые вы бы написали:
sb.Remove(sb.Length - 2, 2);
Другие советы
Да, это правильно."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;
В вызове delete в Java он удаляет символ от начала до конца-1.Вместо этого вызов C # удаляет строку из start на любой указанный вами срок.