Какой метод C # эквивалентен этому базовому методу Java?

StackOverflow https://stackoverflow.com/questions/574171

  •  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 на любой указанный вами срок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top