Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#7

AW: Umlaute und Sonderzeichen "lesbar" ersetzen

  Alt 6. Mär 2017, 15:18
Du suchst sowas:
Delphi-Quellcode:
function ZeichenErsetzen(sIn : String) : String;
var
  i : Integer;
begin
  Result := '';
  for i := 1 to Length(sIn) do begin
    Case sIn[i] Of
       #0 .. #47 : Result := Result + '_'; // Alles vor den Ziffern
       #48 .. #57 : Result := Result + sIn[i]; // die Ziffern
       #58 .. #64 : Result := Result + '_'; // Alles zwischen den Ziffern und den Großbuchstaben
       #65 .. #90 : Result := Result + sIn[i]; // die Großbuchstaben
       #91 .. #96 : Result := Result + '_'; // Alles zwischen den Großbuchstaben und den Kleinbuchstaben
       #97 ..#122 : Result := Result + sIn[i]; // die Kleinbuchstaben
      // Tja und dann:
      // zeichenweise oder doch lieber weitere Gruppen bilden?
      // Hier ginge auch noch
      // #123 .. #137 : Result := Result + '_';
      #123 : Result := Result + '_'; // {
      #124 : Result := Result + '_'; // |
      #125 : Result := Result + '_'; // }
      #126 : Result := Result + '_'; // ~
      #127 : Result := Result + '_'; // 
      #128 : Result := Result + '_'; // €
      #129 : Result := Result + '_'; //
      #130 : Result := Result + '_'; // ‚
      #131 : Result := Result + '_'; // ƒ
      #132 : Result := Result + '_'; // „
      #133 : Result := Result + '_'; // …
      #134 : Result := Result + '_'; // †
      #135 : Result := Result + '_'; // ‡
      #136 : Result := Result + '_'; // ˆ
      #137 : Result := Result + '_'; // ‰
      #138 : Result := Result + 'S'; // Š
      #139 : Result := Result + '_'; // ‹
      #140 : Result := Result + 'OE'; // Œ
      #141 : Result := Result + '_'; //
      #142 : Result := Result + 'Z'; // Ž
      #143 : Result := Result + '_'; //
      #144 : Result := Result + '_'; //
      #145 : Result := Result + '_'; // ‘
      #146 : Result := Result + '_'; // ’
      #147 : Result := Result + '_'; // “
      #148 : Result := Result + '_'; // ”
      #149 : Result := Result + '_'; // •
      #150 : Result := Result + '_'; // –
      #151 : Result := Result + '_'; // —
      #152 : Result := Result + '_'; // ˜
      #153 : Result := Result + 'TM'; // ™
      #154 : Result := Result + 's'; // š
      #155 : Result := Result + '_'; // ›
      #156 : Result := Result + 'oe'; // œ
      #157 : Result := Result + '_'; //
      #158 : Result := Result + 'z'; // ž
      #159 : Result := Result + 'Y'; // Ÿ
      #160 : Result := Result + '_'; // *
      #161 : Result := Result + '_'; // ¡
      #162 : Result := Result + '_'; // ¢
      #163 : Result := Result + '_'; // £
      #164 : Result := Result + '_'; // ¤
      #165 : Result := Result + '_'; // ¥
      #166 : Result := Result + '_'; // ¦
      #167 : Result := Result + '_'; // §
      #168 : Result := Result + '_'; // ¨
      #169 : Result := Result + '_'; // ©
      #170 : Result := Result + '_'; // ª
      #171 : Result := Result + '_'; // «
      #172 : Result := Result + '_'; // ¬
      #173 : Result := Result + '_'; // *
      #174 : Result := Result + '_'; // ®
      #175 : Result := Result + '_'; // ¯
      #176 : Result := Result + '_'; // °
      #177 : Result := Result + '_'; // ±
      #178 : Result := Result + '_'; // ²
      #179 : Result := Result + '_'; // ³
      #180 : Result := Result + '_'; // ´
      #181 : Result := Result + '_'; // µ
      #182 : Result := Result + '_'; // ¶
      #183 : Result := Result + '_'; // ·
      #184 : Result := Result + '_'; // ¸
      #185 : Result := Result + '1'; // ¹
      #186 : Result := Result + '_'; // º
      #187 : Result := Result + '_'; // »
      #188 : Result := Result + '1_4'; // ¼
      #189 : Result := Result + '1_2'; // ½
      #190 : Result := Result + '3_4'; // ¾
      #191 : Result := Result + '_'; // ¿
      #192 : Result := Result + 'A'; // À
      #193 : Result := Result + 'A'; // Á
      #194 : Result := Result + 'A'; // Â
      #195 : Result := Result + 'A'; // Ã
      #196 : Result := Result + 'Ae'; // Ä
      #197 : Result := Result + 'A'; // Å
      #198 : Result := Result + 'AE'; // Æ
      #199 : Result := Result + 'C'; // Ç
      #200 : Result := Result + 'E'; // È
      #201 : Result := Result + 'E'; // É
      #202 : Result := Result + 'E'; // Ê
      #203 : Result := Result + 'Ee'; // Ë
      #204 : Result := Result + 'I'; // Ì
      #205 : Result := Result + 'I'; // Í
      #206 : Result := Result + 'I'; // Î
      #207 : Result := Result + 'Ie'; // Ï
      #208 : Result := Result + 'D'; // Ð
      #209 : Result := Result + 'N'; // Ñ
      #210 : Result := Result + 'O'; // Ò
      #211 : Result := Result + 'O'; // Ó
      #212 : Result := Result + 'O'; // Ô
      #213 : Result := Result + 'O'; // Õ
      #214 : Result := Result + 'Oe'; // Ö
      #215 : Result := Result + 'x'; // ×
      #216 : Result := Result + 'O'; // Ø
      #217 : Result := Result + 'U'; // Ù
      #218 : Result := Result + 'U'; // Ú
      #219 : Result := Result + 'U'; // Û
      #220 : Result := Result + 'Ue'; // Ü
      #221 : Result := Result + 'Y'; // Ý
      #222 : Result := Result + '_'; // Þ
      #223 : Result := Result + 'ss'; // ß
      #224 : Result := Result + 'a'; // à
      #225 : Result := Result + 'a'; // á
      #226 : Result := Result + 'a'; // â
      #227 : Result := Result + 'a'; // ã
      #228 : Result := Result + 'ae'; // ä
      #229 : Result := Result + 'a'; // å
      #230 : Result := Result + 'ae'; // æ
      #231 : Result := Result + 'c'; // ç
      #232 : Result := Result + 'e'; // è
      #233 : Result := Result + 'e'; // é
      #234 : Result := Result + 'E'; // ê
      #235 : Result := Result + 'ee'; // ë
      #236 : Result := Result + 'i'; // ì
      #237 : Result := Result + 'i'; // í
      #238 : Result := Result + 'i'; // î
      #239 : Result := Result + 'ie'; // ï
      #240 : Result := Result + '_'; // ð
      #241 : Result := Result + 'n'; // ñ
      #242 : Result := Result + 'o'; // ò
      #243 : Result := Result + 'o'; // ó
      #244 : Result := Result + 'o'; // ô
      #245 : Result := Result + 'o'; // õ
      #246 : Result := Result + 'oe'; // ö
      #247 : Result := Result + '_'; // ÷
      #248 : Result := Result + 'o'; // ø
      #249 : Result := Result + 'u'; // ù
      #250 : Result := Result + 'u'; // ú
      #251 : Result := Result + 'u'; // û
      #252 : Result := Result + 'ue'; // ü
      #253 : Result := Result + 'y'; // ý
      #254 : Result := Result + '_'; // þ
      #255 : Result := Result + 'ye'; // ÿ
    end;
  end;
  while Pos('__',Result) > 0 do Result := AnsiReplaceText(Result,'__','_');
end;
lediglich auf alle Sprachen erweitert

Eine Orgie sind diese 7 Zeilen nicht:
Ja. Aber es gibt ja eine Menge anderer Zeichen, die behandelt werden müssen, z.B. ó, È und was weiß ich noch.
Mir ist aber in der Zwischenzeit aufgegangen, dass das Ganze wohl sprachabhängig sein wird - z.B. wird aus ä vermutlich nur in Deutsch ae, während andere Sprachen einfach a draus machen. Damit wird's dann langsam unangenehm. :-/
Der letzte Satz in diesem Zitat ist (vermutlich) die Ursache dafür, dass es das Gesuchte nicht gibt. Es kann annähernd beliebig komplex werden.

Ohne eine klare Vorgabe zu der / den unterstützten Sprache(n) und klaren "Übersetzungsanweisungen" wird das nix.

Geändert von nahpets ( 6. Mär 2017 um 15:40 Uhr) Grund: Schreibfehler behoben - #65 musste beim zweiten Mal #97 sein.
  Mit Zitat antworten Zitat