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


2

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

Метод 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 бит этой цитаты .. и если бы я, возможно, перебрал вещи.

cheers :)

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

2

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

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

0

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


1

Да, это правильно. «Конец-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;