Delphi: Jedes StringReplaceW oder WideStringReplace Funktionen da draußen?
Frage
Gibt es weit String-Manipulation Implementierungen da draußen?
function WideUpperCase(const S: WideString): WideString;
function WidePos(Substr: WideString; S: WideString): Integer;
function StringReplaceW(const S, OldPattern, NewPattern: WideString;
Flags: TReplaceFlags): WideString;
etc
Lösung
ich in der Regel die "Microsoft VBScript Regular Expression 5.5" Typenbibliothek importieren und verwenden IRegExp Objekte.
OP Bearbeiten
Ich mag diese Antwort, und ich ging weiter und schrieb eine StringReplaceW
Funktion RegEx mit:
function StringReplaceW(const S, OldPattern, NewPattern: WideString; Flags: TReplaceFlags): WideString;
var
objRegExp: OleVariant;
Pattern: WideString;
i: Integer;
begin
{
Convert the OldPattern string into a series of unicode points to match
\uxxxx\uxxxx\uxxxx
\uxxxx Matches the ASCII character expressed by the UNICODE xxxx.
"\u00A3" matches "£".
}
Pattern := '';
for i := 1 to Length(OldPattern) do
Pattern := Pattern+'\u'+IntToHex(Ord(OldPattern[i]), 4);
objRegExp := CreateOleObject('VBScript.RegExp');
try
objRegExp.Pattern := Pattern;
objRegExp.IgnoreCase := (rfIgnoreCase in Flags);
objRegExp.Global := (rfReplaceAll in Flags);
Result := objRegExp.Replace(S, NewPattern);
finally
objRegExp := Null;
end;
end;
Andere Tipps
Die JEDI Projekt JclUnicode.pas umfasst, die WideUpperCase und WidePos hat, aber nicht StringReplace. Der Code SysUtils.pas StringReplace ist nicht sehr kompliziert, so dass Sie leicht nur, dass kopieren könnten und ersetzen String mit Wide AnsiPos mit WidePos und AnsiUpperCase mit WideUpperCase und etwas funktional, wenn langsam.
Die TntControls hat eine Reihe von Wide-Version Funktionen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow