Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB2010 - VB2015 | 31.12.20 |
Berechnen der Lesedauer für Texte; VB.net Es wird eine Funktion zum Ermitteln der Lesedauer von Texten gezeigt. | ||
Autor: Dietrich Herrmann | Bewertung: | Views: 1.852 |
ohne Homepage | System: Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Der Tipp ist konform zu meinem Tipp Berechnen der Lesedauer eines Dokuments (VBA, Word2007), den ich für VBA veröffentlichte.
Bitte auch die Tipp-Beschreibung bei obigem Link lesen...
Hier stelle ich eine Funktion zur Verfügung, welche entsprechend einer vorausgewählten Berechnungsart die Lesedauer berechnet. Es wird eine Hilfsfunktion für das Ermitteln der Wortanzahl verwendet. Als Ergebnis wird ein Tupel ausgegeben.
Erforderlich:
Imports System.Text.RegularExpressions
Hier die Funktion:
''' <summary> ''' Berechnen der Lesedauer eines Textes ''' </summary> ''' <param name="theText">der Text</param> ''' <param name="art">die Art der Berechnung gemäß durchschnittlicher Lesegeschwindigkeit, ''' Auswahl aus dem Feld wert()</param> ''' <returns>ein Tuple mit Dauer, Dauer formatiert, Lesertyp, Wortanzahl </returns> Public Function LesedauerText(theText As String, Optional art As Short = 1) _ As Tuple(Of Integer, String, String, Integer) Dim ldVal, Worte As Integer, TimeForm As String Dim Dauer As Integer Dim bez() As String = {"Schlechter Leser", "Durchschnittlicher Leser", "Guter Leser"} Dim wpm() As String = {"10-100 WpM", "200-240 WpM", "rund 400 WpM"} Dim wert() As Short = {80, 220, 350} ldVal = wert(art) Worte = GetStringWordCount(theText) Dauer = Worte / ldVal TimeForm = Format(DateAdd("s", Dauer * 60, "00:00:00"), "HH:mm") + " (Stdn:Min)" Return New Tuple(Of Integer, String, String, Integer)(Dauer, TimeForm, bez(art), Worte) End Function
Und die Hilfsfunktion:
''' <summary> ''' Gibt die Anzahl der Wörter eines Strings zurück ''' </summary> ''' <param name="Text">der Text, dessen Wörter gezählt werden sollen.</param> ''' <returns>die Wortanzahl</returns> Public Function GetStringWordCount(Text As String) As Integer Return Regex.Matches(Text, "w{1,}").Count End Function