Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.String aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Die Methode Compare(s1, s2) vergleicht zwei Strings. Im Standard werden Groß- und Kleinschreibung berücksichtigt. Dies kann mit einem dritten Parameter abgeschaltet werden: String.Compare(s1, s1a, True). Compare() liefert 0, 1 und -1 zurück und zeigt damit nicht nur an, ob zwei Strings verschieden sind, sondern auch ob der erste String lexikalisch kleiner (-1) oder größer ist als der zweite (1). Bei dem Vergleich wird die aktuelle Ländereinstellung (Thread.CurrentThread.CurrentCulture) berücksichtigt.
Die von System.Object geerbte Methode Equals() (Beispiel: s1.Equals(s2)) liefert lediglich ein True oder False. Der Vergleich ist immer case-sensitive und die Ländereinstellung ist irrelevant.
Programmcodebeispiele Visual Basic .NET (VB.NET)
' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' String-Vergleiche
' ===========================
Sub string_vergleich()
Dim s1 As String
Dim s1a As String
Dim s2 As String
Dim i As Integer
s1 = "Holger"
s1a = "holger"
s2 = "Hans"
' --- String-Vergleich ohne Berücksichtigung der aufrufenden Instanz
' (als aufrufende Instanz wird hier der Klassenname ("String") verwendet)
'1. Die Strings sind gleich (Rückgabewert: 0)
i = String.Compare(s1, s1)
Console.WriteLine("1. '" & s1 & "' verglichen mit '" & s2 & "' ergibt: ")
Console.WriteLine(i & " (Die Strings sind gleich)" & vbNewLine)
'2. Die Strings sind nicht gleich, da defaultmäßig Groß- und Kleinschreibung berücksichtigt wird
' (Rückgabewert: 1, d.h.: s1 ist größer als s1a)
i = String.Compare(s1, s1a)
Console.WriteLine("2. s1 verglichen mit s1a ergibt: ")
Console.WriteLine(i & vbNewLine)
'3. Die Strings sind gleich, da Groß- und Kleinschreibung nicht berücksichtigt wird
' (Rückgabewert: 0)
i = String.Compare(s1, s1a, True)
Console.WriteLine("3. s1 verglichen mit s1a ergibt: ")
Console.WriteLine(i & vbNewLine)
'4. Die Strings sind gleich, da Groß- und Kleinschreibung berücksichtigt wird
' (Rückgabewert: 1, d.h.: s1 ist größer als s1a)
i = String.Compare(s1, s1a, False)
Console.WriteLine("4. s1 verglichen mit s1a ergibt: ")
Console.WriteLine(i & vbNewLine)
'5. String s1 ist größer als String s2
' (Rückgabewert: 1)
i = String.Compare(s1, s2)
Console.WriteLine("5. s1 verglichen mit s2 ergibt: ")
Console.WriteLine(i & vbNewLine)
'6. String s2 ist kleiner als String s1
' (Rückgabewert: -1)
i = String.Compare(s2, s1)
Console.WriteLine("6. s2 verglichen mit s1 ergibt: ")
Console.WriteLine(i & vbNewLine)
'--- String-Vergleich, der den Inhalt der aufrufenden Instanz berücksichtigt
' (Rückgabewert: 0, d.h.: die Strings sind gleich)
i = s1.CompareTo(s1)
Console.WriteLine("s1 verglichen mit s1 ergibt: ")
Console.WriteLine(i & vbNewLine)
End Sub
Programmcodebeispiele CSharp (C#)
using System;
using System.Globalization;
using System.Threading;
using FCL_Buch;
namespace FCLBuch.System {
public class Samples_String {
// Stringvergleiche
public void String_Vergleich() {
string s1;
string s1a;
string s2;
int i;
s1 = "Holger";
s1a = "holger";
s2 = "Babsi";
// Stringvergleich ohne Berücksichtigung der aufrufenden Instanz
// (als aufrufende Instanz wird hier der Klassenname ("String") verwendet)
// 1. Die Strings sind gleich (Rückgabewert: 0)
i = String.Compare( s1, s1 );
FclOutput.PrintOut( "1. '" + s1 + "' verglichen mit '" + s2 + "' ergibt: " );
FclOutput.PrintOut( i.ToString() + " (Die Strings sind gleich)" + "\r\n" );
// 2. Die Strings sind nicht gleich, da defaultmäßig Groß- und Kleinschreibung berücksichtigt wird
// (Rückgabewert: 1, d.h.: s1 ist größer als s1a)
i = String.Compare( s1, s1a );
FclOutput.PrintOut( "2. s1 verglichen mit s1a ergibt: " );
FclOutput.PrintOut( i.ToString() + "\r\n" );
//3. Die Strings sind gleich, da Groß- und Kleinschreibung nicht berücksichtigt wird
// (Rückgabewert: 0)
i = String.Compare( s1, s1a, true );
FclOutput.PrintOut( "3. s1 verglichen mit s1a ergibt: " );
FclOutput.PrintOut( i.ToString() + "\r\n" );
//4. Die Strings sind gleich, da Groß- und Kleinschreibung berücksichtigt wird
// (Rückgabewert: 1, d.h.: s1 ist größer als s1a)
i = String.Compare( s1, s1a, false );
FclOutput.PrintOut( "4. s1 verglichen mit s1a ergibt: " );
FclOutput.PrintOut( i.ToString() + "\r\n" );
//5. String s1 ist größer als String s2
// (Rückgabewert: 1)
i = String.Compare( s1, s2 );
FclOutput.PrintOut( "5. s1 verglichen mit s2 ergibt: " );
FclOutput.PrintOut( i.ToString() + "\r\n" );
//6. String s2 ist kleiner als String s1
// (Rückgabewert: -1)
i = String.Compare( s2, s1 );
FclOutput.PrintOut( "6. s2 verglichen mit s1 ergibt: " );
FclOutput.PrintOut( i.ToString() + "\r\n" );
//--- Stringvergleich, der den Inhalt der aufrufenden Instanz berücksichtigt
// (Rückgabewert: 0, d.h.: die Strings sind gleich)
i = s1.CompareTo( s1 );
FclOutput.PrintOut( "s1 verglichen mit s1 ergibt: " );
FclOutput.PrintOut( i.ToString() + "\r\n" );
}
public void String_Vergleich2() {
// Stringvergleich mit bool als Rückgabewert
string s1 = "Babsi";
string s2 = "babsi";
bool b1;
bool b2;
// --- Vergleich unter Berücksichtigung der aufrufenden Instanz
b1 = s1.Equals( s1 );
// Die beiden Strings stimmen nicht überein, da case-sensitiv
b2 = s1.Equals( s2 );
FclOutput.PrintOut( "Hat die aufrufende Instanz den übergebenen Wert?" );
FclOutput.PrintOut( b1.ToString() + "\r\n" );
FclOutput.PrintOut( b2.ToString() + "\r\n" );
// --- Vergleich ohne Berücksichtigung der aufrufenden Instanz
// (als aufrufende Instanz wird hier der Klassenname ("String") verwendet)
// Die beiden Strings stimmen nicht überein, da case-sensitiv
b1 = String.Equals( s1, s2 );
FclOutput.PrintOut( "Stimmen die beiden Strings überein?" );
FclOutput.PrintOut( b1.ToString() + "\r\n" );
}
public void String_Vergleich3() {
// Vergleich für Teilstrings mittels EndWith()
string s1 = "Hallo Welt";
string s2 = "Welt";
string s2a = "welt";
bool b;
// Das Ende von String s1 stimmt mit s2 überein
b = s1.EndsWith( s2 );
FclOutput.PrintOut( "Endet s1 mit s2?" );
FclOutput.PrintOut( b.ToString() + "\r\n" );
// Das Ende von String s1 stimmt mit s2 nicht überein (case-sensitiv)
b = s1.EndsWith( s2a );
FclOutput.PrintOut( "Endet s1 mit s2a?" );
FclOutput.PrintOut( b.ToString() + "\r\n" );
}
}
}
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.String'
Übersicht über den FCL-Namensraum 'System'
.NET & Visual Studio Community Portal