Seite 1 von 4
Schreibweise ändern (so geht das <> So Geht Das)...?
Verfasst: 04.02.2008 22:32
von Ghosty1967
In VB gab es einen String-Befehl, mit dem man einen String in seiner Schreibweise
ändern konnte (weiß nich mehr welcher), also z.B. machte man aus
"dies ist ein testtext, um zu zeigen was passierte" <> "Dies Ist Ein Testtext, Um Zu Zeigen Was Passierte"
gibt es sowas in PB bzw. kennt jemand einen Kniff, um sowas zu realisieren?
Verfasst: 04.02.2008 22:49
von AND51
Jedem großzuschreibenden Buchstaben steht doch ein Lerzeichen voran, oder? Dann machs doch so:
Code: Alles auswählen
Procedure.s SoGehtDas(text.s)
Protected n.l
For n='A' To 'Z'
ReplaceString(text, " "+Chr(n), " "+Chr(n), #PB_String_InPlace)
Next
For n='a' To 'z'
ReplaceString(text, " "+Chr(n), " "+Chr(n-32), #PB_String_InPlace)
Next
ProcedureReturn text
EndProcedure
Debug SoGehtDas("Dies ist ein testtext, um zu zeigen was passierte")
Dem ersten steht kein Leerzeichen voran, also mach selber eines davo und benutze hinterher
LTrim().
Verfasst: 04.02.2008 22:53
von Andreas_S
Code: Alles auswählen
Procedure.s irgendeinBefehl( str.s , firstLetterToo )
Protected *ptr.CHARACTER = @str, space
If firstLetterToo
*ptr\c - 32
EndIf
While *ptr\c <> 0
If *ptr\c = 32
space = 1
Else
If space = 1
*ptr\c - 32
EndIf
space = 0
EndIf
*ptr + SizeOF(CHARACTER)
Wend
ProcedureReturn str
EndProcedure
Debug irgendeinBefehl("hallo ich bin ein string", 1)
//edit:
jetzt auch mit mehr lehrzeichen xD
//edit:
um HeX0R's und Unicodes' willen auch Unicode fähig
Andreas

Verfasst: 04.02.2008 23:16
von Ghosty1967
Danke Euch... !

Verfasst: 04.02.2008 23:18
von HeX0R
Richtig wäre übrigens (soll ja wohl unicodefähig sein):
Verfasst: 04.02.2008 23:25
von Andreas_S
jaja
unicode muss auch noch sein...
Andreas
Verfasst: 04.02.2008 23:31
von AND51
Übrigens ist man bei deiner Proc gezwungen, den Text mit einem Buchstaben starten zu lassen, wenn man 'firstLetterToo' auf 1 setzt.
Verfasst: 04.02.2008 23:32
von Andreas_S
Ja das stimmt.. und was solls? Ist doch kein Problem...
Andreas
Verfasst: 04.02.2008 23:39
von Andreas_S
Jetzt das ultimative Update
Code: Alles auswählen
Procedure.s irgendeinBefehl( str.s )
Protected *ptr.CHARACTER = @str, space = 1
While *ptr\c <> 0
If *ptr\c = 32
space = 1
Else
If space = 1
If (*ptr\c >= 97) And (*ptr\c <= 122)
*ptr\c - 32
space = 0
EndIf
EndIf
EndIf
*ptr + SizeOf(CHARACTER)
Wend
ProcedureReturn str
EndProcedure
Debug irgendeinBefehl("<hallo +ich -bin 'ein ?string")
Andreas
Verfasst: 04.02.2008 23:48
von AND51
Jetzt noch ein viel ultimativeres Update!
@ Andreas_S:
Na, kannst du's auch nur mit
1 Variable?
@ Thread:
Code: Alles auswählen
Procedure.s Capitalize(text.s)
Protected *pos.Character=@text
While *pos\c
While *pos\c < 'a' Or *pos\c > 'z'
*pos+SizeOf(Character)
Wend
*pos\c-32
While (*pos\c >= 'a' And *pos\c <= 'z') Or (*pos\c >= 'A' And *pos\c <= 'Z')
*pos+SizeOf(Character)
Wend
Wend
ProcedureReturn text
EndProcedure
Debug Capitalize("dies ist ein testtext, um zu zeigen was passierte")
Speedtest folgt...