Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 249
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

String in einzelne Wörter aufteilen und Wörter zählen


Autor: DotNetMastermind
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 5637
  
Kick it on dotnet-kicks.de  

Beschreibung:

Hier im Forum gibt es bereits einige Einträge zu diesem Thema. Jedoch sind die Lösungen meistens „Nachbauten“ der .Net-Klassenmethode Strings.Split und somit auch mit deren Besonderheiten behaftet wie z.B. die benötigte Angabe eines „delimeters“ (Trennzeichens).

Einfacher und eleganter geht dies mittels einer „Extensions-Methode“, welche den übergebenen String in einzelne Wörter aufteilt. Mittels Implementierung als „Extensions-Methode“ kann man die Methode direkt auf jeden String anwenden.


public static class ExtendedStringMethods
{
public static MatchCollection SplitIntoWords(this string strToSplit)
{
return Regex.Matches( strToSplit, @"\w{1,}" );
}

public static string[] GetWordArray(this string strToSplit)
{
List strWords = new List();

foreach (Match word in Regex.Matches( strToSplit, @"\w{1,}" ))
strWords.Add( word.ToString() );

return strWords.ToArray();
}

public static int CountWords(this string strToCount)
{
return Regex.Matches( strToCount, @"\w{1,}" ).Count;
}
}


In der Beispielanwendung kann man einen String (hier der Text in einer TextBox) mit nur einem Methodenaufruf in einzelne Wörter aufteilen und eine ListBox damit füllen :


lbDemo.ItemsSource = tbDemo.Text.SplitIntoWords();


Falls als Rückgabewert ein String-Array benötigt wird, kann stattdessen die Methode „GetWordArray()“ aufgerufen werden :


lbDemo.ItemsSource = tbDemo.Text.GetWordArray();


Die Anzahl der Wörter in einem String (hier der Text in einer TextBox) erhält man mittels der Methode „CountWords()“ :


lblDemo.Content = tbDemo.Text.CountWords();


Screenshots der Beispielanwendung => http://twitpic.com/2ykf2k oder http://twitpic.com/2yllsb


Abgelegt unter: String, string, split, splitten, Text, aufteilen, einzelne Wörter, Anzahl, zählen.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
C#-Code :

using System;
using System.Windows;
using System.Windows.Controls;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace FunctionLibraryTest1
{
  public partial class Window1 : Window
  {
    public Window1() { InitializeComponent(); }

    private void btnSplit_Click(object sender, RoutedEventArgs e)
    {
      lbDemo.ItemsSource = tbDemo.Text.SplitIntoWords();
      lblDemo.Content = tbDemo.Text.CountWords();
    }
  }

  public static class ExtendedStringMethods
  {
    public static MatchCollection SplitIntoWords(this string strToSplit)
    {
      return Regex.Matches( strToSplit, @"\w{1,}" );
    }

    public static string[] GetWordArray(this string strToSplit)
    { 
      List<string> strWords = new List<string>();

      foreach (Match word in Regex.Matches( strToSplit, @"\w{1,}" ))
        strWords.Add( word.ToString() );

      return strWords.ToArray();
    }

    public static int CountWords(this string strToCount)
    {
      return Regex.Matches( strToCount, @"\w{1,}" ).Count;
    }
  }
}


XAML-Code :

<Window x:Class="FunctionLibraryTest1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title=".Net-Snippets ExtendedStringMethods" Height="400" Width="300">

  <Window.Resources>
    <!-- **************************************************************************************** <-->
    <!-- ***************************** Hintergrund der ListViews ******************************** <-->
    <!-- **************************************************************************************** <-->
    <LinearGradientBrush x:Key="ListViewBackgroundDark" StartPoint="0,0" EndPoint="0,1">
      <GradientStop Offset="0" Color="Black"/>
      <GradientStop Offset="0.8" Color="DimGray"/>
      <GradientStop Offset="1" Color="DimGray"/>
    </LinearGradientBrush>
    <!-- **************************************************************************************** <-->
    <!-- **************************** Standard-Style für Buttons ******************************** <-->
    <!-- **************************************************************************************** <-->
    <Style x:Key="StandardButtonStyle" TargetType="Button">
      <Setter Property="Width" Value="100"/>
      <Setter Property="Height" Value="30"/>
      <Setter Property="Foreground" Value="White"/>
      <Setter Property="HorizontalAlignment" Value="Right"/>
      <Setter Property="VerticalAlignment" Value="Top"/>
    </Style>
    <!-- **************************************************************************************** <-->
    <!-- **************************** Template für schwarze Buttons ***************************** <-->
    <!-- **************************************************************************************** <-->
    <ControlTemplate x:Key="BlackButton" TargetType="{x:Type Button}">
      <Border BorderBrush="White" BorderThickness="1" CornerRadius="3">
        <Border BorderBrush="DarkGray" BorderThickness="1" CornerRadius="3">
          <Grid Name="ButtonGrid">
            <Rectangle Name="ButtonRect">
              <Rectangle.Fill>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                  <GradientStop Offset="0" Color="Gray" />
                  <GradientStop Offset="0.49" Color="DimGray" />
                  <GradientStop Offset="0.5" Color="DimGray" />
                  <GradientStop Offset="1" Color="Black" />
                </LinearGradientBrush>
              </Rectangle.Fill>
            </Rectangle>
            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" />
          </Grid>
        </Border>
      </Border>

      <ControlTemplate.Triggers>
        <!-- Bei Mausbewegung über den Button ... -->
        <Trigger Property="IsMouseOver" Value="True">
          <!-- Buttonhintergrund heller darstellen -->
          <Setter Property="Fill" TargetName="ButtonRect">
            <Setter.Value>
              <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                <GradientStop Offset="0" Color="Silver" />
                <GradientStop Offset="1" Color="Black" />
              </LinearGradientBrush>
            </Setter.Value>
          </Setter>
          <!-- Leuchteffekt -->
          <Setter Property="BitmapEffect">
            <Setter.Value>
              <OuterGlowBitmapEffect GlowColor="White" GlowSize="5" />
            </Setter.Value>
          </Setter>
        </Trigger>

        <Trigger Property="IsPressed" Value="True">
          <Setter Property="Fill" TargetName="ButtonRect" Value="#FF000000" />
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Window.Resources>
  <Grid>
    <Grid.Background>
      <RadialGradientBrush GradientOrigin="0,0" Center="0.5,0.5" RadiusX="1.2" RadiusY="1.2">
        <RadialGradientBrush.GradientStops>
          <GradientStop Color="LightBlue" Offset="0" />
          <GradientStop Color="Black" Offset="0.8" />
          <GradientStop Color="Black" Offset="1" />
        </RadialGradientBrush.GradientStops>
      </RadialGradientBrush>
    </Grid.Background>
    <Grid.RowDefinitions>
      <RowDefinition Height="200" />
      <RowDefinition Height="100" />
      <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <ListBox x:Name="lbDemo" Grid.Row="0" Width="170" Height="172" Margin="0,15,0,0" FontSize="14"
             HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="White"
             Background="{StaticResource ListViewBackgroundDark}"/>
    <Label x:Name="lblDemo" Grid.Row="0" Width="50" Margin="0,10,0,0" FontSize="14"
           Content="0" Foreground="White" HorizontalAlignment="Right" VerticalAlignment="Top"/>
    <TextBox x:Name="tbDemo" Grid.Row="1" Width="200" Height="75" Margin="0,10,0,0" FontSize="14"
             HorizontalAlignment="Center" VerticalAlignment="Top" VerticalScrollBarVisibility="Auto"
             TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" Foreground="White"
             Background="Black"/>
    <Button x:Name="btnSplit" Grid.Row="2" Width="180" Margin="0,0,0,20" 
            Content="Text in einzelne Wörter aufteilen" Click="btnSplit_Click"
            Style="{StaticResource StandardButtonStyle}" Template="{DynamicResource BlackButton}"
            HorizontalAlignment="Center" VerticalAlignment="Bottom" />
  </Grid>
</Window>
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[C#] Hexcode eines Strings ausgeben
[VB.NET] Größe eines Strings berechnen
[C#] String bei bestimmten Zeichen splitten
[C#] Encode To ASCII - Buchstaben in Ascii-Werte umwandeln
[C#] Gibt den MD5 Hash eines Stings als String zurück.
[C#] String in Byte Array und zurück wandeln
[VB.NET] Den SHA1 Hash eines Strings ermitteln
[VB.NET] Den MD5 Hash eines Strings ermitteln
[C#] Wandelt ein Bytearray in einen Binärstring
[VB.NET] Text auf Bild zeichnen
[C#] String auf Emailadresse prüfen
[C#] SHA-1 Hash eines Strings erzeugen
[VB.NET] Strings schnell zählen
[VB.NET] Pfad kürzen
[VB.NET] Einfache Ähnlichkeitssuche (SQL)
[C#] Pfad kürzen
[C#] IsPositiveInteger as Extension Method
[C#] Datum und Zeit als String
[C#] String spiegeln
[VB.NET] String spiegeln
[C#] Erweiterung für Stringumwandlungen
[C#] Image in string wandeln und zurück
[C#] Strings komprimieren und dekomprimieren
[C#] CamelCase in Title Case konvertieren
[C#] Text zentriert in die Konsole schreiben
[VB.NET] Strings komprimieren und dekomprimieren
[C#] Fuzzy Suche
[VB.NET] Rows eines DataGridView in ein String-Array konvertieren
[C#] kontrolliert ob String eine gültige GUID ist
[C#] HTML aus einem String entfernen
[C#] byte-String in byte wandeln
[C#] Formelevaluierung aus RPN Form
[C#] Erzeugen eines zufälligen Strings
[C#] mehrfach vorkommende Worte entfernen
[C#] Determines whether the specified input is numeric
[C#] Prozentual Textvergleichen
[C#] doppelte Leerzeichen aus einem String entfernen
[C#] Zählt wie oft ein String in einem String vorkommt.
[C#] String kürzen ohne ein Wort abzuschneiden
[C#] String auf erlaubte Zeichen prüfen
[C#] Austauch von kritischen Zeichen in einem String...
[VB.NET] String in Byte Array und zurück wandeln
[C#] Gross- Kleinbuchstaben in String schnell zählen
[VB.NET] Listen, Arrays, Strings konvertieren
[C#] CRC32-Hash eines Strings
[VB.NET] CRC32-Hash eines Strings
[C#] Größe eines Strings berechnen
[VB.NET] String Splitten
[C#] Capitalize the first letter of every word
[VB.NET] Textdatei lesen und schreiben (String, StringArray, etc...)
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Double in String umwandeln (mit InvariantCulture)
[C#] String in Double umwandeln (mit InvariantCulture)
[C#] Convert MAC string to byte array
[C#] Reverse String
[C#] Stellt fest ob ein String ein Palindrom ist
[VB.NET] String umkehren
[C#] Letztes Wort aus einem String ermitteln
[C#] Erstes Wort aus einem String ermitteln
[VB.NET] List all controls by using the name of the controls
[C#] Alle E-Mail Adressen aus einem String bzw. Text filtern
[C#] StringSplitter
[C#] Fundstelle eines Suchbegriffs markieren
[C#] Initialisiert alle String-Properties
[C#] MD5 Verschlüsselung
[C#] HTML Tags aus String entfernen
[C#] Geschachtelte Methode zur String-Bearbeitung
[C#] Byte Größenangaben als String formatieren (KB, MB, GB, ...)
[VB.NET] Permutation nachweisen
[C#] Implode und Trim für String-Enumerationen (Extension Method)
[C#] String zu MD5
[C#] Tabulatorzeichen durch Leerzeichen ersetzen
[VB.NET] Passwortgenerator
[C#] Render MVC Action as string
[C#] Namen von Klassenmember als String ermitteln
[C#] IncreaseString
[VB.NET] String uebers Netzwerk oder Internet and einen PC senden
[C#] String to char Tarnung
[C#] C# XOR Crypt
[C#] String-Formatierung für Faule: Erweiterungsmethode
[C#] Darstellung eines ASP.NET Steuerelementes als HTML-String
[C#] Wie ToString() welche mit null-Strings umgehen kann
[VB.NET] Text Datei in Listbox einlesen (Split)
[C#] Split
[C#] Bild splitten
[C#] Arraylist in Textdatei schreiben
[C#] Form-Überschrift zentrieren
[C#] Text Resourcen aus Assembly auslesen
[C#] Anzahl von Vorkommen eines Textes in einem anderen Text
[C#] Fenstertitel im ColorDialog festlegen
[C#] Textdatei in List einlesen
[C#] Aeh-oh-meter
[C#] Aeh-oh-meter
[C#] Aeh-oh-meter
[C#] Aeh-oh-meter-Dialog
[C#] Zeilennummern zum Text hinzufügen
[C#] Textdatei einlesen auf verschiedene Arten
[C#] Text codieren
[C#] Text-to-Speech (Sprachausgabe)
[C#] Inhalt einer als Ressource eingebetteten Text-Datei ausgeben
[C#] Einfaches Text-Highlighting
[C#] Texteditor als for-Schleife verpackt
[VB.NET] Anzahl der Einträge eines Registryschlüssels ermitteln
[C#] Liste mit Ereignis bei Änderung der Elementanzahl
[VB.NET] Anzahl der Desktop Icons ermitteln
[VB.NET] Anzahl phys. CPU´s eines Remotesystems ermitteln
[VB.NET] Anzahl der Nachkommastellen einer Dezimalzahl bestimmen
[VB.NET] Nachkommastellen einer Dezimalzahl extrahieren
[C#] Tastenschläge zählen [Übersetzung]
[C#] arbeiten mit einem struct-Typ. Auflisten, zählen

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.