rgreat | ↑ |
---|
function Convert(const InText: string): string;
var
i, op: Integer;
c: Char;
t, n: string;
begin
i := 1;
op := 1;
while PosEx('\u', InText, i) <> 0 do
begin
i := PosEx('\u', InText, i);
t := t + Copy(InText, op, i - op);
Inc(i, 2);
n := Copy(InText, i, 4);
op := i + 4;
c := Char(StrToInt('$' + n));
t := t + WideString(c);
end;
t := t + Copy(InText, op, Length(InText));
Result := t;
end;
|
Немного подправил код:
function Convert( const InText : string ) : string;
var
i : integer;
c : WideChar;
n : string;
begin
Result := InText;
i := Pos( '\u', Result );
while i > 0 do
begin
n := Copy( Result, i + 2, 4 );
c := WideChar( StrToInt( '$' + n ) );
Result := StringReplace( Result, '\u' + n, c, [rfReplaceAll, rfIgnoreCase] );
i := Pos( '\u', Result );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := Convert('abc \u0430\u0431\u0432\u0433 def');
end;
В данном варианте результат '
abc абвг def' (проверял на D5).
Вся исходная строка преобразовалась в:
'{"code":99003,"message":"Заказ, который вы хотите добавить, уже есть в базе данных","data":{}}'