Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Groß u. Kleinschreibung eines Strings umkehren (https://www.delphipraxis.net/129741-gross-u-kleinschreibung-eines-strings-umkehren.html)

k6n 24. Feb 2009 22:39


Groß u. Kleinschreibung eines Strings umkehren
 
Hi,

Wie kann ich die Groß und Kleinschreibung eines String umkehren?

Aus HaLLo soll z.B hAllO werden.

Danke

Satty67 24. Feb 2009 22:51

Re: Groß u. Kleinschreibung eines Strings umkehren
 
Könnte funktionieren:
Delphi-Quellcode:
function SwitchUpperLower(Str : String): String;
var
  i : Integer;
begin
  Result := Str;
  for i := 1 to Length(Result) do
    if UpperCase(Result[i]) = Result[i] then
      Result[i] := LowerCase(Result[i])[1]
    else
      Result[i] := UpperCase(Result[i])[1];
end;

jaenicke 24. Feb 2009 23:28

Re: Groß u. Kleinschreibung eines Strings umkehren
 
Das ist etwas schneller: ;-)
Delphi-Quellcode:
function SwitchLowerUpper(Value: String): String;
var
  i: Integer;
begin
  Result := Value;
  for i := 1 to Length(Value) do
    if Value[i] in ['a'..'z'] then
      Result[i] := Chr(Ord(Value[i]) - 32)
    else if Value[i] in ['A'..'Z'] then
      Result[i] := Chr(Ord(Value[i]) + 32);
end;

Sir Rufo 24. Feb 2009 23:37

Re: Groß u. Kleinschreibung eines Strings umkehren
 
Zitat:

Zitat von jaenicke
Das ist etwas schneller: ;-)
Delphi-Quellcode:
function SwitchLowerUpper(Value: String): String;
var
  i: Integer;
begin
  Result := Value;
  for i := 1 to Length(Value) do
    if Value[i] in ['a'..'z'] then
      Result[i] := Chr(Ord(Value[i]) - 32)
    else if Value[i] in ['A'..'Z'] then
      Result[i] := Chr(Ord(Value[i]) + 32);
end;

... logisch, lässt ja auch einiges aus ... äöü ?

Satty67 24. Feb 2009 23:37

Re: Groß u. Kleinschreibung eines Strings umkehren
 
Ganz vergessen, wenn man Umlaute braucht, dann AnsiUpperCase bzw. AnsiLowerCase (in dem Fall wäre auch die schnellere Variante überfordert)

jaenicke 24. Feb 2009 23:51

Re: Groß u. Kleinschreibung eines Strings umkehren
 
So meinte ich das mit dem schneller nicht :lol: , die Umlaute hatte ich vergessen :oops: :
Delphi-Quellcode:
function SwitchLowerUpper(Value: String): String;
var
  i: Integer;
begin
  Result := Value;
  for i := 1 to Length(Value) do
    if Value[i] in ['a'..'z', 'ä', 'ö', 'ü'] then
      Result[i] := Chr(Ord(Value[i]) - 32)
    else if Value[i] in ['A'..'Z', 'Ä', 'Ö', 'Ü'] then
      Result[i] := Chr(Ord(Value[i]) + 32);
end;

Sir Rufo 25. Feb 2009 00:03

Re: Groß u. Kleinschreibung eines Strings umkehren
 
Allerdings in den Zeiten von Unicode würde ich das nicht verwenden wollen ...

k6n 25. Feb 2009 00:42

Re: Groß u. Kleinschreibung eines Strings umkehren
 
Danke an alle, funktioniert super. :thumb:

himitsu 25. Feb 2009 07:29

Re: Groß u. Kleinschreibung eines Strings umkehren
 
Delphi-Quellcode:
function SwitchLowerUpper(const Value: String): String;
var
  i: Integer;
begin
  Result := Value;
  for i := 1 to Length(Result) do
    if Result[i] in ['a'..'z', 'ä', 'ö', 'ü', 'A'..'Z', 'Ä', 'Ö', 'Ü'] then
      Result[i] := Chr(Ord(Result[i]) xor $20);
Delphi-Quellcode:
function SwitchUpperLower(Value: String): String;
var
  uValue: String;
  i: Integer;
begin
  Result := LowerCase(Value);
  uValue := UpperCase(Value);
  for i := 1 to Length(Result) do
    if Result[i] = Value[i] then
      Result[i] := uValue[i];
end;
:angel:

Satty67 25. Feb 2009 07:48

Re: Groß u. Kleinschreibung eines Strings umkehren
 
Ach, das gibt es schon... und viele Wege führen nach Rom :?

Ich hab' wieder mal auf möglichst wenige Variablen geachtet. Ist zwar sicher unwichtig, aber welche Version ist die schnellste?

Ich durchlaufe Length(Str) nur einmal und mache ein paar Vergleiche. Die Delphi Version 3x, wenn am Anfang jeweils der komplette Str in eine Upper/Lower-Version gewandelt wird? Bei jaenicke's Version hängt es wohl von den verwendeten Zeichen ab.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz