EMZETT.
Login

Kurz: Module Program Sub Main() Dim s As String = “Hallo VB.NET-Welt” Console.WriteLine(s.Length & ” ” & s.ToUpper() & ” ” & s.ToLower()) Console.WriteLine(s(0) & ” ” & s.Substring(6, 2) & ” ” & s.Substring(6)).

Teil des Kurses Visual Basic .NET

Kapitel 5 von 8 im Kurs Visual Basic .NET. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Strings

Imports System.Text
 
Module Program
    Sub Main()
        Dim s As String = "Hallo VB.NET-Welt"
        Console.WriteLine(s.Length & " " & s.ToUpper() & " " & s.ToLower())
        Console.WriteLine(s(0) & " " & s.Substring(6, 2) & " " & s.Substring(6))
        Console.WriteLine(s.Replace("Welt", "Erde"))
        Console.WriteLine(String.Join("|", s.Split(" "c, "-"c)))
        Console.WriteLine(s.Contains("VB") & " " & s.StartsWith("Hallo") & " " & s.EndsWith("x"))
        Console.WriteLine(s.IndexOf("VB") & " " & s.LastIndexOf("l"))
        Console.WriteLine("[" & "  trim  ".Trim() & "]")
        Console.WriteLine(New String("*"c, 5) & " " & "ab".PadLeft(5, "_"c) & " " & "ab".PadRight(5, "_"c))
        Console.WriteLine(String.Format("{0,-6}|{1,6}|{2:F2}|{3:X}", "li", "re", Math.PI, 255))
        Console.WriteLine($"{42:D5} {1234567:N0} {0.256:P1}")
        Console.WriteLine(CInt("17") + 1)
        Dim zahl As Integer
        Console.WriteLine(Integer.TryParse("abc", zahl) & " " & Integer.TryParse("42", zahl) & " " & zahl)
        Console.WriteLine(Asc("A") & " " & Chr(66) & " " & AscW("a"c))
        Console.WriteLine(StrReverse("Basic"))
        Console.WriteLine(UCase("x") & LCase("Y"))
        Console.WriteLine(Left("Visual", 3) & " " & Right("Visual", 3) & " " & Mid("Visual", 2, 3))
        Console.WriteLine("abc" < "abd")
        Console.WriteLine("Apfel".CompareTo("Birne"))
        Console.WriteLine(String.Equals("a", "A", StringComparison.OrdinalIgnoreCase))
        Dim sb As New StringBuilder()
        For i As Integer = 1 To 5
            sb.Append(i).Append(","c)
        Next
        Console.WriteLine(sb.ToString().TrimEnd(","c))
        Console.WriteLine("Zeile1" & vbCrLf & "Zeile2" & vbTab & "Tab")
    End Sub
End Module

Ausgabe:

17 HALLO VB.NET-WELT hallo vb.net-welt
H VB VB.NET-Welt
Hallo VB.NET-Erde
Hallo|VB.NET|Welt
True True False
6 15
[trim]
***** ___ab ab___
li    |    re|3.14|FF
00042 1,234,567 25.6 %
18
False True 42
65 B 97
cisaB
Xy
Vis ual isu
True
-1
True
1,2,3,4,5
Zeile1
Zeile2	Tab

Dateien

Imports System.IO
 
Module Program
    Sub Main()
        Dim pfad As String = Path.Combine(Path.GetTempPath(), "vb-demo.txt")
        File.WriteAllLines(pfad, {"eins", "zwei", "drei"})
        File.AppendAllText(pfad, "vier" & vbLf)
        Dim zeilen As String() = File.ReadAllLines(pfad)
        Console.WriteLine(zeilen.Length & " Zeilen")
        For Each z In File.ReadLines(pfad)
            Console.WriteLine("> " & z)
        Next
        Using leser As New StreamReader(pfad)
            Console.WriteLine(leser.ReadLine())
        End Using
        Using schreiber As New StreamWriter(pfad, False)
            schreiber.WriteLine("neu")
            schreiber.WriteLine("fertig")
        End Using
        Console.WriteLine(File.ReadAllText(pfad).Replace(vbLf, "|"))
        Console.WriteLine(File.Exists(pfad) & " " & New FileInfo(pfad).Length)
        File.Delete(pfad)
        Console.WriteLine(File.Exists(pfad))
        Console.WriteLine(Path.GetFileName("/tmp/a/b.txt") & " " & Path.GetExtension("b.txt"))
        Dim verz As String = Path.Combine(Path.GetTempPath(), "vbdir")
        Directory.CreateDirectory(verz)
        File.WriteAllText(Path.Combine(verz, "a.txt"), "A")
        File.WriteAllText(Path.Combine(verz, "b.txt"), "B")
        Console.WriteLine(String.Join(",", Directory.GetFiles(verz).Select(Function(f) Path.GetFileName(f)).OrderBy(Function(f) f)))
        Directory.Delete(verz, True)
    End Sub
End Module

Ausgabe:

4 Zeilen
> eins
> zwei
> drei
> vier
eins
neu|fertig|
True 11
False
b.txt .txt
a.txt,b.txt

Datum und Zeit

Module Program
    Sub Main()
        Dim d As New DateTime(2024, 3, 15, 14, 30, 0)
        Console.WriteLine(d.ToString("yyyy-MM-dd HH:mm"))
        Console.WriteLine(d.Year & " " & d.Month & " " & d.Day & " " & d.DayOfWeek)
        Console.WriteLine(d.AddDays(20).ToString("dd.MM.yyyy"))
        Console.WriteLine(d.AddMonths(-3).ToString("MMMM yyyy", Globalization.CultureInfo.InvariantCulture))
        Dim differenz As TimeSpan = New DateTime(2024, 12, 31) - New DateTime(2024, 1, 1)
        Console.WriteLine(differenz.TotalDays)
        Console.WriteLine(DateTime.IsLeapYear(2024) & " " & DateTime.DaysInMonth(2024, 2))
        Console.WriteLine(DateTime.Parse("2024-03-15").ToString("yyyy-MM-dd"))
        Console.WriteLine(TimeSpan.FromMinutes(135).TotalHours)
        Console.WriteLine(d > New DateTime(2024, 1, 1))
        Console.WriteLine(DateDiff(DateInterval.Day, New DateTime(2024, 1, 1), New DateTime(2024, 3, 1)))
        Console.WriteLine(Now.Year >= 2024)
    End Sub
End Module

Ausgabe:

2024-03-15 14:30
2024 3 15 5
04.04.2024
December 2023
365
True 29
2024-03-15
2.25
True
60
True

Fehlerbehandlung

Module Program
    Class MeinFehler
        Inherits Exception
        Public Sub New(msg As String)
            MyBase.New(msg)
        End Sub
    End Class
 
    Function Teile(a As Integer, b As Integer) As Integer
        Return a \ b
    End Function
 
    Sub Main()
        Try
            Console.WriteLine(Teile(10, 2))
            Console.WriteLine(Teile(1, 0))
        Catch ex As DivideByZeroException
            Console.WriteLine("Division durch null")
        Finally
            Console.WriteLine("finally läuft immer")
        End Try
 
        Try
            Dim x As Integer = CInt("abc")
        Catch ex As InvalidCastException
            Console.WriteLine("InvalidCast")
        Catch ex As FormatException
            Console.WriteLine("Format: " & ex.Message.Substring(0, 10))
        End Try
 
        Try
            Throw New MeinFehler("eigener Fehler")
        Catch ex As MeinFehler When ex.Message.StartsWith("eigener")
            Console.WriteLine("gefangen: " & ex.Message)
        End Try
 
        Try
            Dim a As Integer() = {1, 2, 3}
            Console.WriteLine(a(5))
        Catch ex As IndexOutOfRangeException
            Console.WriteLine("Index außerhalb")
        End Try
 
        Dim s As String = Nothing
        Try
            Console.WriteLine(s.Length)
        Catch ex As NullReferenceException
            Console.WriteLine("Nothing-Zugriff")
        End Try
    End Sub
End Module

Ausgabe:

5
Division durch null
finally läuft immer
InvalidCast
gefangen: eigener Fehler
Index außerhalb
Nothing-Zugriff

Merke

  • Strings: .NET-Methoden plus Funktionen wie Left, Right, Mid, StrReverse
  • Dateien über System.IO.File, Path, Directory; Using gibt Ressourcen frei
  • DateTime und TimeSpan rechnen mit Datum und Zeit
  • Try ... Catch ... When ... Finally behandelt Ausnahmen

Übungsaufgabe

Lies eine Textdatei und gib Zeilenanzahl und längste Zeile aus.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Klassen, Vererbung und Interfaces

Weiter: Generics, Async und Nebenläufigkeit

Alle Kapitel: Visual Basic .NET im Überblick