Schreibweise ändern (so geht das <> So Geht Das)...?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ghosty1967
Beiträge: 205
Registriert: 29.08.2005 13:56
Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
Wohnort: Köln

Schreibweise ändern (so geht das <> So Geht Das)...?

Beitrag 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?
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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().
Zuletzt geändert von AND51 am 04.02.2008 22:54, insgesamt 1-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag 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 :lol:
Zuletzt geändert von Andreas_S am 04.02.2008 23:26, insgesamt 2-mal geändert.
Benutzeravatar
Ghosty1967
Beiträge: 205
Registriert: 29.08.2005 13:56
Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
Wohnort: Köln

Beitrag von Ghosty1967 »

Danke Euch... ! :mrgreen:
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Richtig wäre übrigens (soll ja wohl unicodefähig sein):

Code: Alles auswählen

*ptr + SizeOF(CHARACTER)
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

jaja :mrgreen:

unicode muss auch noch sein...


Andreas
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Übrigens ist man bei deiner Proc gezwungen, den Text mit einem Buchstaben starten zu lassen, wenn man 'firstLetterToo' auf 1 setzt.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Ja das stimmt.. und was solls? Ist doch kein Problem...

Andreas
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Jetzt das ultimative Update :mrgreen:

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
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Jetzt noch ein viel ultimativeres Update!
@ Andreas_S:
Na, kannst du's auch nur mit 1 Variable? :wink:

@ 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...
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten