Forum: PC-Programmierung C# Stringarry durchsuchen


von Sebastian (Gast)


Lesenswert?

Hallo an alle,

ich bin recht neu was das Programmieren angeht. Daher stehe ich nur vor 
einem Problem und hoffe das ich hier Hilfe bekomme.

Es geht darum, das ich eine List in txt form haben. In dieser Liste 
stehen 83000  7-Stellige Nummern untereinander. Ich habe mit meinem 
derzeitigen Programm, bereits das Programm eingelesen in einer Textbox 
mit multiline. Ich habe das eingelsenen Textfile in eine Stringarray 
gewandelt. Nun möchte ich gerne, dass das Programm das STringarray nach 
Nummern (strings) duchsucht die kleiner 7 Stellen sind, und die erste 
gefundenen in einer einzeiligen zweiten Textbox ausgibt.

Ich habe nun leider kein ansatz wie ich das bewerkstelligen soll. Ich 
hoffe ihr könnt mir weiterhelfen.

viele Grüße
Sebastian

von N. U. (kabelklaus)


Lesenswert?

Moin,

http://www.completecsharptutorial.com/articles/csharp-string-function.php

und gucke mal nach .length

Schönen Tag noch

von Fuzzi59 (Gast)


Lesenswert?

Das finden der Wörter ist mit Linq recht einfach:
1
var words = from s in source where s.Length < 7 select s;
Dabei ist source dein string-Array. In dem IEnumerable<string> words 
sind dann alle Elemente aus deinem Array, die weniger als 7 Stellen 
haben.

von Sebastian (Gast)


Lesenswert?

Hallo und schonmal vieln Dank für die Hilfe. Eine Frage dazu. Bedarf es 
dann keiner for schleife für den Durchlauf durch das Array?

von nicht"Gast" (Gast)


Lesenswert?

Nain, dafür ist LINQ da. Das ist eine Abfragesprache "ähnlich" wie SQL

von Fuzzi59 (Gast)


Lesenswert?

Falls du nur den ersten Wert haben möchtest empfiehlt sich die 
ElementAt-Methode:
1
string firstWord = words.ElementAt(0);
Falls du alle Elemente mit einer Schleife durchlaufen willst, solltest 
du eine foreach-Schleife verwenden:
1
foreach(string word in words)
2
{
3
    //Dein Code für jedes Wort
4
}

von Sebastian (Gast)


Lesenswert?

Fuzzi59 schrieb:
> var words = from s in source where s.Length < 7 select s;

Dieser code stellt doch dann aber alle Nummern im Arry dar, die weniger 
als 7 Zeichen haben oder?

Wie bekäme man es hin nur den ersten Treffer darzustellen?
Macht man das dann mit firstname?


Grüße
Sebastian

von Fuzzi59 (Gast)


Lesenswert?

Alternativ zum Erhalten des ersten Worts mit einer Länge kleiner als 7, 
kannst du auch folgenden Code nehmen:
1
string firstWord = source.First(word => word.Length < 7);
Hier erhälst du nur einen Wert zurück.

von Sebastian (Gast)


Lesenswert?

Fuzzi59 schrieb:
> Alternativ zum Erhalten des ersten Worts mit einer Länge kleiner
> als 7,
> kannst du auch folgenden Code nehmen:string firstWord =
> source.First(word => word.Length < 7);Hier erhälst du nur einen Wert
> zurück.

Das klingt für mich nach dem was ich suche, ergibt nur leider folgenden 
fehler:

Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in 
System.Core.dll aufgetreten.

von Sebastian (Gast)


Lesenswert?

Ich habe das nun so gemacht:

string firstWord = textarray.First(word => word.Length < 7);
FreePN.Text = firstWord;

textarray = Das Array mit den 83000 Nummern (alphanumerische nummern)
FreePN = EInzeilige Textbox die nur die erste nummer mit kleiner 7 
Zeichen ausgeben soll

von Sebastian (Gast)


Lesenswert?

Hallo,


alles gut der code klappt. es lag daran das ich bis dato nich keine 
Nummer kleiner 7 chars habe. aber jetzt geht es wunder bar. Danke

von Fuzzi59 (Gast)


Lesenswert?

Dein Fehler entsteht dadurch, dass entweder dein source-Array keine 
Elemente enthält oder kein Element in deinem Array eine Länge kleiner 
als 7 hat.

von Sebastian (Gast)


Lesenswert?

Fuzzi59 schrieb:
> Dein Fehler entsteht dadurch, dass entweder dein source-Array
> keine
> Elemente enthält oder kein Element in deinem Array eine Länge kleiner
> als 7 hat.

Jupp, daran lag es :-D. Nun läuft alles wie es soll. VIelen Danke für 
die Hilfe euch allen

von nicht"Gast" (Gast)


Lesenswert?

Hallo,

als kleine Ergänzung kannst du auch statt First FirstOrDefault benutzen. 
Dann bekommst du statt einer Exception ein null als Rückgabewert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.