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.