devstory

Le Tutoriel de C# String et de StringBuilder

  1. Héritage hiérarchique
  2. Concepts muable & immuable
  3. String et string
  4. String
  5. StringBuilder

1. Héritage hiérarchique

Quand vous travaillez avecdes données textuelles, CSharp vous fournit 2 classes Stringet StringBuilder. Quand vous travaillez avec Big Data, vous devez utiliser StringBuilder pour optimiser l' efficacité. Les 2 classes ont fondamentalement des points similaires.
  • String est immuable (immutable)(ce concept va être détailler dans ce document). String ne permet pas l'existance des sous- classes.
  • StringBuilder est muable (mutable)

2. Concepts muable & immuable

Observez une illustration:
MutableClassExample.cs
namespace StringTutorial
{
    // Ceci est une classe qui a un champ: 'Value'.
    // Si vous avez un objet de cette classe.
    // Vous pouvez affecter une nouvelle valeur au champ 'Valeur'
    // via la méthode SetNewValue (int).
    // Donc, c'est une classe mutable (mutable).
    class MutableClassExample
    {
        private int Value;

        public MutableClassExample(int value)
        {
            this.Value = value;
        }

        public void SetNewValue(int newValue)
        {
            this.Value = newValue;
        }
    }

}
ImmutableClassExample.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StringTutorial
{
    // Cette classe a 2 champs (field) : 'Value' & 'Name'.
    // Si vous avez un objet de cette classe,
    // Vous ne pouvez pas assigner une nouvelle valeur à 'Valeur', champ 'Name' de l'extérieur,
    // Cela signifie que cette classe est immuable (immutable)
    class ImmutableClassExample
    {
        private int Value;
        private String Name;

        public ImmutableClassExample(String name, int value)
        {
            this.Value = value;
            this.Name = name;
        }

        public String GetName()
        {
            return Name;
        }

        public int GetValue()
        {
            return Value;
        }
    }
}
String est une classe immuable (immutable), String comprend beaucoup de champs (field), par exemple Length,... mais des valeurs dans ces champs ne changent pas.

3. String et string

Dans C#, parfois vous trouvez que String et string sont utilisés en parallèle. En réalité, elles n'ont pas de différence, string peut être considérée comme un pseudonyme (alias) de System.String (le nom complet comprenant l'espace- nom de la classe String).

La table ci- dessous décrit la liste entière des pseudonyme des classes courantes.
Alias
Class
object
System.Object
string
System.String
bool
System.Boolean
byte
System.Byte
sbyte
System.SByte
short
System.Int16
ushort
System.UInt16
int
System.Int32
uint
System.UInt32
long
System.Int64
ulong
System.UInt64
float
System.Single
double
System.Double
decimal
System.Decimal
char
System.Char

4. String

String est une classe cruciale de CSharp, et toute personne qui commence avec le programmme CSharp doit utiliser l'instruction Console.WriteLine() afin d'imprimer une String sur l'écran de Console. Beaucoup de débutants C# ne sont pas concients que String est immuable (immutable) et est fermée (Ne permet pas d'avoir de sous- classes), Chaque changement sur String dont le résultat est la création un nouveau objet String.
** String **
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class String : IComparable, ICloneable, IConvertible,
    IEnumerable, IComparable<string>, IEnumerable<char>, IEquatable<string>
Les méthodes de String
Vous pouvez examiner les méthodes de String à:
Ci-dessous sont des méthodes générales de String.
Some String methods
public bool EndsWith(string value)

public bool EndsWith(string value, StringComparison comparisonType)

public bool Equals(string value)

public int IndexOf(char value)

public int IndexOf(char value, int startIndex)

public int IndexOf(string value, int startIndex, int count)

public int IndexOf(string value, int startIndex, StringComparison comparisonType)

public int IndexOf(string value, StringComparison comparisonType)

public string Insert(int startIndex, string value)

public int LastIndexOf(char value)

public int LastIndexOf(char value, int startIndex)

public int LastIndexOf(char value, int startIndex, int count)

public int LastIndexOf(string value)

public int LastIndexOf(string value, int startIndex)

public int LastIndexOf(string value, int startIndex, int count)

public int LastIndexOf(string value, int startIndex, int count, StringComparison comparisonType)

public int LastIndexOf(string value, int startIndex, StringComparison comparisonType)

public int LastIndexOf(string value, StringComparison comparisonType)

public int LastIndexOfAny(char[] anyOf)

public int LastIndexOfAny(char[] anyOf, int startIndex)

public int LastIndexOfAny(char[] anyOf, int startIndex, int count)

public int IndexOf(string value, int startIndex, int count, StringComparison comparisonType)

public string Replace(char oldChar, char newChar)

public string Replace(string oldValue, string newValue)

public string[] Split(params char[] separator)

public string[] Split(char[] separator, int count)

public string[] Split(char[] separator, int count, StringSplitOptions options)

public string[] Split(char[] separator, StringSplitOptions options)

public string[] Split(string[] separator, StringSplitOptions options)

public bool StartsWith(string value)

public bool StartsWith(string value, bool ignoreCase, CultureInfo culture)

public bool StartsWith(string value, StringComparison comparisonType)

public string Substring(int startIndex)

public string Substring(int startIndex, int length)

public char[] ToCharArray()

public char[] ToCharArray(int startIndex, int length)

public string ToLower()

public string ToLower(CultureInfo culture)

public string ToLowerInvariant()

public override string ToString()

public string ToUpper()

public string ToUpper(CultureInfo culture)

public string ToUpperInvariant()

public string Trim()

public string Trim(params char[] trimChars)

public string TrimEnd(params char[] trimChars)

public string TrimStart(params char[] trimChars)

5. StringBuilder

Dans C#, le résultat de chaque modification dans String est la création un nouveau objet String. Alors que StringBuilder comprend une multitude de caractères, cette gamme va être automatiquement remplacée par une autre plus étendue s'il est nécessaire, et copier les caractères depuis l'ancienne gamme. Si vous devez concaténer une multiple de strings, vous devez utiliser StringBuilder, il aide à augmenter l'efficacité du programme. Mais il n'est pas nécessaire si vous concaténez seulement quelques stringss, n'abusez pas de StringBuilder dans ce cas.
StringBuilderDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StringTutorial
{
    class StringBuilderDemo
    {
        public static void Main(string[] args)
        {

            // Créez un objet StringBuilder
            // d'une capacité (capacity) de 10 caractères.
            StringBuilder sb = new StringBuilder(10);

            // Ajoutez la chaîne Hello.
            sb.Append("Hello...");
            Console.WriteLine("- sb after appends a string: " + sb);

            // Ajoutez un caractère
            char c = '!';
            sb.Append(c);
            Console.WriteLine("- sb after appending a char: " + sb);

            // Insérez une chaîne à l'index 5.
            sb.Insert(8, " CSharp");
            Console.WriteLine("- sb after insert string: " + sb);

            // Supprimez la sous-chaîne aux index 5 et 3 caractères.
            sb.Remove(5, 3);

            Console.WriteLine("- sb after remove: " + sb);

            // Obtenez une chaîne dans StringBuilder.
            String s = sb.ToString();

            Console.WriteLine("- String of sb: " + s);

            Console.Read();
        }
    }

}
Les résultats de l'exécution de l'exemple:
- sb after appends a string: Hello...
- sb after appending a char: Hello...!
- sb after insert string: Hello... CSharp!
- sb after remove: Hello CSharp!
- String of sb: Hello CSharp!