AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Umlaute in String ersetzen

Ein Thema von Andreas L. · begonnen am 10. Sep 2006 · letzter Beitrag vom 13. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Andreas L.
(Gast)

n/a Beiträge
 
#1

Umlaute in String ersetzen

  Alt 10. Sep 2006, 13:31
Hi,
gibt es schon eine Funktion die mir Umlaute wie ß, ö, ü, ä, usw. in einen String mit ss, oe, ue, ae ersetzt? Hintergrund: Ich lese Bezeichnungen und Namen aus einer Datei und weiß diese Werte dynamisch generierten Komponenten zu. Solche Zeichen sind aber nicht als Komponentenname erlaubt.

Kennt jemand so eine Funktion? Ansonsten muss ich mir die wohl selber bauen.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Umlaute in String ersetzen

  Alt 10. Sep 2006, 13:32
stringreplace ist das stichwort. Dazu musst du aber die unit "strutils" einbinden.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: Umlaute in String ersetzen

  Alt 10. Sep 2006, 13:34
Zitat von NamenLozer:
stringreplace ist das stichwort. Dazu musst du aber die unit "strutils" einbinden.
StringReplace ist mir bekannt. Das muss ich dann aber für jedes Umlaut einzeln ausführen. Außerdem ist es sehr langsam. Da muss es doch schon was Delphi-Internes geben...
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Umlaute in String ersetzen

  Alt 10. Sep 2006, 13:39
Dann fällt mir eigentlich nur noch sowas ein:

Delphi-Quellcode:
function ErsetzeUmlaute(s: string): string;
var i: integer;
begin
  for i := 1 to length(s) do
  begin
    Case s[i] of
    'ä': result := result+'ae';
    'ü': result := result+'ue';
    'ö': result := result+'oe';
    'ß': result := resultü'ss';
    else: result := resultüs[i];
    end;
  end;
end;
Oder gibt es was eleganteres?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Umlaute in String ersetzen

  Alt 10. Sep 2006, 14:10
Moin Andreas,

ist auch sichergestellt, dass es sich nur um diese Sonderzeichen handeln kann, und nicht etwa auch é usw. dort auftauchen können?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#6

Re: Umlaute in String ersetzen

  Alt 10. Sep 2006, 14:16
Zitat von Christian Seehase:
Moin Andreas,

ist auch sichergestellt, dass es sich nur um diese Sonderzeichen handeln kann, und nicht etwa auch é usw. dort auftauchen können?
Da der User diese Werte selber in Dateien eintragen kann könnte dies natürlich auch passieren.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Umlaute in String ersetzen

  Alt 10. Sep 2006, 14:46
Hallo Andreas,

vielleicht findest du in folgendem thread noch ein paar Denkanstöße: StringReplace einmal auslösen für alle Umlaute?

Grüße vom marabu
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#8

Re: Umlaute in String ersetzen

  Alt 10. Sep 2006, 16:48
Hallo,

in meiner Frage [dp]StringReplace automatisch - was geht schnell und einfach?[/dp] wurde Folgendes empfohlen:
  • in (konstanten oder variablen) Arrays arrSearch und arrReplace alle gewünschten Konvertierungen vorsehen
  • Datei als String einlesen (für FileStream ist die Dateigröße bekannt)
  • in einer Schleife für jedes Element von arrSearch/arrReplace mit StringReplace bearbeiten
  • dann den String wieder als Textdatei speichern
Gruß Jürgen

[/edit]Nachtrag (@Manuel 3_of_8 in #9)
Meine Frage war allgemeiner formuliert worden, und dort werden bei der Suche Strings (nicht Chars) verwendet. Bei der Suche nach Chars kann man es natürlich mit einer Schleife erledigen.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Umlaute in String ersetzen

  Alt 10. Sep 2006, 17:00
Das dürfte recht langsam sein, da die Schleife immer wieder für jeden Umlaut durchlaufen wird und nicht einmal für alle zusammen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Umlaute in String ersetzen

  Alt 12. Sep 2006, 22:00
Delphi-Quellcode:
function ErsetzeUmlaute(s: string): string;
var i,j: integer;
const
      AnzUmlaute =7;
      Umlaute: Array[0..AnzUmlaue-1] of char = ('ä','ö','ü','ß','Ä','Ö','Ü');
      Ersetzt: Array[0..AnzUmlaue-1] of string = ('ae','oe','ue','ss','Ae','Ue','Oe');
begin
  for i := 1 to length(s) do
  begin
    for j := 0 to anzumlaute-1 do
    begin
      if s[i] = Umlaute[j] then
      begin
        result := result+umlaute[j];
        break;
      end
      else
        result := result+s[i];
    end;
  end;
end;
Ich habs mal etwas erweitert. Ich denke aber, dass es nicht besonders schnell ist wegen "result:=result+...".
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.
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