lösung gesucht

hi ho

kannmir jemand diese lösung als porgramm schreiben ich raff es einfach net:

aufgabe:
function getwordfromstr (byref text$, byval num& as string
Schreiben sie eine function die jeweils das „num“-te Wort aus einem übergebenen Text zurückliefert…

sorry aber ich hab keinen balssen schimmer danke im vorraus

so einfach mach ichs dir nicht:
Du sollst aus einem Satz das num(x) te Wort zurückgeben.
Also mußt du die Leerzeichen suchen, da jedes Wort mit einem Leerzeichen getrennt wird.

Also jedes Zeichen einzeln anschauen und sich die Leerzeichen merken.
Als Beispiel ‚das dritte Wort‘, 3:

Das dritte Wort - ist also ‚Wort‘, dazwischen hast du 2 Leerzeichen gefunden, also mußt du die Zeichen zwischen dem 2. und 3. Leerzeichn zurückgeben.
Geht mit 2 Schleifen bestimmt ganz einfach…

Gruß
Joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Function getwordfromstr(ByRef text$, ByVal num&amp:wink: As String
Dim i As Long, getword As Long
Dim flag As Boolean

getword = 0
flag = True
If (Mid(text, i, 1) = num) Or (i = Len(txt)) Then
If (flag = False) Then
getword = getword + num
flag = True
End If
Else
flag = False
End If
Next i
getwordfromstr = getword

derzeitg mein versuch aber irgendwie voll der fehler

ok das müsste dann die lösung seinFunction GetWordFromStr(ByRef text$, ByVal num&amp:wink: As String
Dim retwert As String
Dim i As Long, wordcount As Long
Dim flag As Boolean

flag = True
For i = 1 To Len(text)
If (Mid(text, i, 1) = " ") Or (i = Len(text)) Then
If (flag = False) Then
wordcount = wordcount + 1
flag = True
End If
Else
If (wordcount + 1 = num) Then
retwert = retwert & Mid(text, i, 1)
End If
flag = False
End If

ok das müsste dann die lösung seinFunction

sieht Spitze aus, aber beim letzten Wort wollen wird der letzte Buchstabe abgezwackt…

Mach deine Schleife einfach eins weiter und vergioss nicht den Ausstieg zu erweitern:

For i = 1 To Len(text) + 1
If (Mid(text, i, 1) = " ") Or (i = Len(text) + 1) Then

Hallo Fragewurm,
Schön es wird sogar berücksichtigt dass da mehrere Blanks stehen können und sogar welche am Anfang des Strings :smile:)
Wenn du dich noch steigern willst, kannst du auch noch TAB als Trennzeichen zwischen Wörtern zulassen und ein Zeilenumbruch ist eigentlich auch noch ein Worttrenner.

MfG Peter(TOO)
P.S. Mit dem TAG werden die Listings hier lesbarer.

ok das müsste dann die lösung seinFunction

> GetWordFromStr(ByRef text$, ByVal num&amp:wink: As String  
> Dim retwert As String  
> Dim i As Long, wordcount As Long  
> Dim flag As Boolean  
>   
>   
> flag = True  
> For i = 1 To Len(text)  
> If (Mid(text, i, 1) = " ") Or (i = Len(text)) Then  
> If (flag = False) Then  
> wordcount = wordcount + 1  
> flag = True  
> End If  
> Else  
> If (wordcount + 1 = num) Then  
> retwert = retwert & Mid(text, i, 1)  
> End If  
> flag = False  
> End If

ok danke an alle werde bis nächsten dienstag ncoh mega büffeln müssen a ich dann prüfung hab…aber danach kann ich euch ja mit java belästigen das hab ichdann die nächsten vier wochen

also danke

mfg
andy

Echt? Die versauen Euch erst mit VB, bevor sie Euch die „richtigen“ Sachen zeigen? Wer macht denn sowas? *kopfschüttel*

Und jetzt schnell die Asbestjacke anziehen… :smile:

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Versuch’s mal damit:

Function getwordfromstr(ByRef text$, ByVal num&amp:wink: As String

Dim a As Variant

a = Split(text, " ")

If (num - 1 0) Then
getwordfromstr = a(num - 1)
End If

End Function