Einzelne Buchstaben in einem String bearbeiten

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Woody the woodiest

Betreff: Einzelne Buchstaben in einem String bearbeiten

BeitragDo, Dez 23, 2004 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es eine Funktion/Befehl, die/der zur Bearbeitung einzelner
Buchstaben in einer Zeichenkette dient?
Ich hab in einem Prog ein Array mit 80 Zeichenketten, von denen jede einen Namen enthält, der in zufälliger Länge zufällig generiert ist. Nun will ich diese Namen bearbeiten (einzelne Buchstaben auswechseln) und weiß nicht, wie ich das machen soll.
Man könnte ja für jeden Buchstaben einen Platz in einem Array machen, doch ich suche eine Alternative.
Am Sonntag sind die Autobahnen leer, so kann man ruhig in Urlaub fahren.
Würden alle so denken, wären die Autobahnen am Sonntag voll.
Warum sind sie es trotzdem nicht?
Weil der Großteil der Bevölkerung gar nicht denken KANN.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, Dez 23, 2004 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
For x= 1 to Len(A$)
Buchstabe$ = mid(A$,x,1)
if ....was auch immer

..

next


nun kommt es darauf an was geändert bzw gesucht und ersetzt werden soll!
das geht mit instr left right mid und evt upper
[BB2D | BB3D | BB+]
 

hot-bit

Gast

BeitragDo, Dez 23, 2004 19:42
Antworten mit Zitat
Hoi.

Bevor du was suchen läßt, wäre es angebracht, daß du mal suchst !

Es gibt so schöne Befehle für BlitzBasic !

Und die kann man sogar benutzen Smile

Also, nicht zuerst programmieren wollen, und dann die Befehle suchen, sondern anders rum !

Toni
 

Woody the woodiest

BeitragFr, Dez 24, 2004 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Befehle kannt ich schon vorher, aber ich wusste nicht genau, wie ich sie für mein Programm anwenden soll.
Jetzt hab ich ein Problem: Wieso wird hier der Anfangsbuchstabe jedes Namens nicht groß gespeichert?

Code: [AUSKLAPPEN]

Graphics 800,600,32,1          ;Vollbild mit Auflösung 800x600x32
SetBuffer BackBuffer()   
AppTitle "BAPTISM"

;Hintergrundfarbe
ClsColor 60,130,255

SeedRnd MilliSecs()            ;Saat basiert auf vergangener Zeit seit PC-Start

;----------------
;Image laden    |
;----------------

Anzeigeflaeche=LoadImage("Anzeigefläche_JLTW.png")

;-------------
;Arrays       |
;-------------

Dim Namen$(Namenanzahl)          ;Array für die zufällig generierten Namen (80 Stück)
Dim Laenge(Namenanzahl)          ;Array für die Länge jedes Namens
Dim Vokale(4)                    ;ASCII-Codes für die Vokale "a,e,i,o,u"
Dim Anfangsbuchstabe(Namenanzahl) ;ASCII-Code für den ersten Buchstaben jedes Namens 


;--------------------
;Arrays füllen      |
;--------------------

Vokale(0)=97
Vokale(1)=101
Vokale(2)=105
Vokale(3)=112
Vokale(4)=117

;--------------------------
;Variablen/Konstanten     |
;--------------------------

;Konstanten

Const Namenanzahl=79           ;Anzahl der Namen im Array "Namen"
Const Mindestzahl=2            ;Mindestanzahl der Buchstaben in einem Namen
Const Hoechstzahl=14           ;Höchstzahl von Buchstaben in einem Namen
Const Ersterbuchstabe=97       ;ASCII-Code für den ersten Buchstaben "a"
Const Letzterbuchstabe=122     ;ASCII-Code für den letzten Buchstaben "z"

;Positionen Buttons, Anzeigefläche etc.

Const AnzeigeflaecheX=35
Const AnzeigeflaecheY=40

;Variablen
 




;-------------------
;Funktionen        |
;-------------------

Function Namensgenerierung()
 For a=0 To Namenanzahl
  For b=0 To Laenge(a)
   Namen$(a)=Namen$(a)+Chr$(Rand(Ersterbuchstabe,Letzterbuchstabe))
  Next
 Next
End Function
   



;Länge zufällig festlegen

For a=0 To Namenanzahl
 If Laengenauswahl=0 Then
  Laenge(a)=Rand(Mindestzahl,Hoechstzahl)
 End If
Next

;-------------------------------------------
;Namen generieren(Aufrufen der Funktion)   |
;-------------------------------------------
Namensgenerierung





;-----------------------
;Namen bearbeiten      |
;-----------------------

;Ersten Buchstaben groß machen

For a=0 To Namenanzahl
 For b=Ersterbuchstabe To Letzterbuchstabe
  Anfangsbuchstabe(a)=Asc(Left$(Namen$(a),1))
  If Anfangsbuchstabe(a)=b Then
   Anfangsbuchstabe(a)=b-32
   Replace$(Namen$(a),Left$(Namen$(a),1),Chr$(Anfangsbuchstabe(a)))
  End If
 Next
Next

Daten=WriteFile("C:\Programme\Namen.txt")

For a=0 To Namenanzahl
 WriteLine Daten,Namen$(a)
Next
CloseFile Daten


;-----------------------
;Benutzeroberfläche    |
;-----------------------
Repeat
 Cls
 
 ;----------------------
 ;Buttons etc. malen   |
 ;----------------------
 
 ;Anzeigefläche
 DrawImage Anzeigeflaeche,AnzeigeflaecheX,AnzeigeflaecheY
 
 Flip
Until KeyHit(1)


WaitKey
End


Danke im Voraus
Am Sonntag sind die Autobahnen leer, so kann man ruhig in Urlaub fahren.
Würden alle so denken, wären die Autobahnen am Sonntag voll.
Warum sind sie es trotzdem nicht?
Weil der Großteil der Bevölkerung gar nicht denken KANN.
 

hot-bit

Gast

BeitragFr, Dez 24, 2004 13:40
Antworten mit Zitat
Hoi.

tztztztz .....

Upper$(Text) und Lower$(Text) sind wahrscheinlich undokumentiert ! Smile

So ein Pech ...

Toni
 

Woody the woodiest

BeitragFr, Dez 24, 2004 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Aahh, jetzt hab ichs. Aber ich hab immer noch eine Frage:

Wieso funktionieren nicht beide von den zwei untenstehenden Varianten?

Code: [AUSKLAPPEN]

For a=0 To Namenanzahl
   Anfangsbuchstabe(a)=Asc(Upper$(Left$(Namen$(a),1)))  ;Der erste Buchstabe (von links) wird groß gemacht
 Namen$(a)=Chr$(Anfangsbuchstabe(a))+Right$(Namen$(a),Laenge(a)-1)
Next


Code: [AUSKLAPPEN]

For a=0 To Namenanzahl
   Anfangsbuchstabe(a)=Asc(Upper$(Left$(Namen$(a),1)))  ;Der erste Buchstabe (von links) wird groß gemacht
   Replace$(Namen$(a),Left$(Namen$(a),1),Chr$(Anfangsbuchstabe(a)))
Next


(Die erste Variante funzt, die zweite nicht)
Danke im Voraus
Am Sonntag sind die Autobahnen leer, so kann man ruhig in Urlaub fahren.
Würden alle so denken, wären die Autobahnen am Sonntag voll.
Warum sind sie es trotzdem nicht?
Weil der Großteil der Bevölkerung gar nicht denken KANN.
 

hot-bit

Gast

BeitragFr, Dez 24, 2004 23:23
Antworten mit Zitat
Hoi.

Vielleicht kannst da was draus lernen ...
(Hohoho - der Weihnachtsmann) Smile

Code: [AUSKLAPPEN]
Dim namen$(3)

Namen$(1)="knafl anton"
Namen$(2)="schönaugürtel 48, 8010 graz"
namen$(3)="austria"

For j=1 To 3
  For a=1 To Len(namen$(j))
    If a=1
      namen$(j)=Upper$(Mid$(namen$(j),a,1))+Mid$(namen$(j),a+1,Len(namen$(j))-1)
    EndIf   
    If Mid$(namen$(j),a,1)=Chr$(32)
      namen$(j)=Left$(namen$(j),a)+Upper$(Mid$(namen$(j),a+1,1))+Mid$(namen$(j),a+2,Len(namen$(j))-a-1)
    EndIf
  Next
Next

For i=1 To 3
  Print namen$(i)
Next

While Not KeyHit(1):Wend
End


Toni

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group