Quelle est la méthode C# équivalente à cette méthode Java de base?


2

question vraiment simple ici (plus de confirmer mes pensées, que quoi que ce soit) ...

Méthode 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)); 

La raison pour laquelle je ne suis pas sûr est dans la documentation de la méthode supprimer java. Il dit

Le sous-chaîne commence au début spécifiée et étend le caractère à fin d'index - 1 ou à la fin de la StringBuffer si aucun caractère existe

Je suis juste pas trop sûr à ce sujet fin - 1 peu de cette citation .. et si je pourrais avoir fraked les choses.

acclamations :)

modifier: Heh. Je savais qu'il supprimait les 2 derniers caractères de la chaîne, mais je gardais la conversion exacte, à cause de mon code verbeux. :)

2

Pour supprimer les 2 derniers caractères que vous écririez:

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

0

Dans l'appel de suppression en Java, il supprime le caractère du début à la fin-1. L'appel C# supprime à la place une chaîne de début pour le temps que vous spécifiez.


1

Oui, c'est correct. Le "fin - 1" signifie que si vous appelez delete (2, 8) il supprime les caractères avec index 2 à 7, mais pas le caractère avec index 8.

Donc, votre code est correct. Cependant, certaines compétences en mathématiques me serait utile ici, et vous verriez que:

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

Faire le code:

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

Une autre façon de faire la même chose serait:

sb.Length -= 2;