String
- Is een reference type.
- Is een character-array maar niet volledig te benaderen als array.
- Is een immutable type = éénmaal een waarde toegekend is, kan de waarde niet meer gewijzigd worden. Als er bewerkingen op gedaan worden als trimmen, dan wordt een copy van de string genomen.
Declaratie en initialisatie
// Als empty string initialiseren (zijn alle 3 hetzelfde)
string s = String.Empty;
string s = string.Empty;
string s = "";
string s = null;
string s = "Hello world!";
Het is aangeraden om als empty string te initialiseren in plaats van null
om allerlei exceptions te vermijden.
Empty strings
String.IsNullOrEmpty()
controleert of een string de waarde null of geen lengte heeft.
String.IsNullOrWhiteSpace()
controleert hetzelfde als IsNullOrEmpty()
en daarnaast ook of het enkel white spaces bevat. Het doet hetzelfde als String.IsNullOrEmpty(s) || s.Trim().Length == 0;
maar is performanter. Een white space is gedefinieerd door Char.IsWhiteSpace()
.
De meest performante manier om voor een lege string te controleren is String.Length == 0
.
if (s.Length != 0)
return s;
Property en methodes
String.Length
String.Compare()
voor twee strings te vergelijken. Dit gebruikt de ingestelde cultuursettings van je computer. De aangeraden overload isString.Compare(String, String, StringComparison)
zodat je de cultuursettings zelf kiest en vast zet (meer info nodig).StringComparison
is een enum. Het resultaat is een int:-1
indien de tweede string in orde na de eerste komt,0
indien ze beiden leeg zijn of op dezelfde plaatsen staan,1
als de tweede voor de eerste komt.String.Contains()
om te controleren of een string een bepaalde substring bevat.String.Equals()
om te controleren of twee strings identieke character data bevatten.==
doet hetzelfde.String.Format()
om andere types te converteren naar strings en samen te voegen tot 1 string. Zie ook Interpolated Strings en Formatting Types.String.Insert()
om een andere string binnenin een string te steken.String.PadLeft()
String.PadRight()
String.Remove()
String.Replace()
String.Split()
String.Trim()
om gespecifieerde karakters te verwijderen van het begin en einde van de string.String.ToLower()
om naar lowercase om te zetten. Maakt kopie van huidige string.String.ToUpper()
om naar lowercase om te zetten. Maakt kopie van huidige string.- en meer... zie String Methods (System) voor de hele lijst.
String.Compare("", ""); // 0
String.Compare("", "a"); // -1, een lege string is altijd eerst in orde
String.Compare("a", "b"); // -1
String.Compare("", ""); // 0
String.Compare("choco", "chauffauge"); // 1, de 'a' van chauffauge komt voor de 'o' van choco
String.Compare("abc", "AbC", true);
// 0, derde parameter boolean true zegt om niet case-sensitive te werken (ignoreCase).
val s1 = "choco";
val s2 = "chocomousse";
s2.Contains(s1); // true, choco zit in chocomousse
s1.Equals(s2); // false, doet hetzelfde als s1 == s2
String.Equals() vs ==
In tegenstelling tot Java waar enkel Equals werkt, kun je in C# zowel ==
als Equals()
gebruiken om de inhoud van twee strings te vergelijken. Bij andere objecten wordt met ==
gekeken of ze naar hetzelfde object wijzen (en dit is ook wat er gebeurt in Java als je ==
op strings gebruikt).
// Doen hetzelfde in C#
if (s1 == s2)
if (s1.Equals(s2))
Escape sequences \
\n
newline\t
tab\'
enkel aanhalingsteken\"
dubbel aanhalingsteken\a
system alert/beep\\
backslash- en meer... zie Escape sequences.
Console.WriteLine("\"Hello\", \tworld!\n");
// "Hello", world!
Je kan ook werken met verbatim strings @
, dan hoef je normale karakters niet te escapen, met uitzondering van één karakter: het dubbel aanhalingsteken "
. Dit wordt vaak gebruikt voor paden (naar bvb bestanden), reguliere expressies en multi-line tekst (SQL).
Console.WriteLine(@"""Hello"", world!"); // "Hello", world!
Console.WriteLine("C:\\Users\\Rich"); // C:\Users\Rich
Console.WriteLine(@"C:\Users\Rich"); // C:\Users\Rich
String select = @"
SELECT Foo
FROM Bar
WHERE Name='Baz'";
Extra informatie
Bronnen
- String.Empty Field
- String.IsNullOrEmpty Method
- String.IsNullOrWhiteSpace Method
- Char.IsWhiteSpace Method
- StackOverflow: Most advisable way of checking empty strings
- Comparing Strings in .NET
- Interpolated Strings
- Escape sequences