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
War es hilfreich?

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
scroll top