字符处理,一时不通,急用.(300分)

  • 主题发起人 主题发起人 冰力不足
  • 开始时间 开始时间

冰力不足

Unregistered / Unconfirmed
GUEST, unregistred user!
有聊天室ID 格式是:

张三:abc你好 1v
李四:jhu
王五:f j k 汗照顾

现要把这些ID格式化
1.凡是空格的变为'+'
2.凡是汉字的转为十六进制 如 '古'字变为 %B9%C5
3.凡是英文的不变 a依然是a

即:
abc你好 1v 格式后变为: abc%C4%E3%BA%C3+1v
jhu 格式后变为: jhu
f j k 汗照顾 格式后变为: f+j+k+%BA%B9%D5%D5%B9%CB

求编程写一函数 实现对上述类型ID的格式化处理.
//-----------
提供几个函数帮您思考
//字符串转为十六进制
function StrToHexStr(const s: string): string;
var
i: Integer;
begin
result:='';
for i:=1 to length(s) do
result:=result+'%'+format('%2X',[ord(s)]);
end;

{用ByteType,
比如:
ByteType('你好haha吗',1) = mbLeadByte//是第一个字符
ByteType('你好haha吗',2) = mbTrailByte//是第二个字符
ByteType('你好haha吗',5) = mbSingleByte//不是中文字符}

//提取汉字
function GetChineseStr(Str: String): String;
var
S:widestring;
i:integer;
begin
Result:='';
S:=Str;
for i:=1 to length(S) do
begin
if ord(S)>127 then
begin
Result:=Result+S;
end;
end;
end;
 
function Change(AString: string): string;
var
i: Integer;
begin
Result := '';
for i := 1 to Length(AString) do
begin
if Ord(AString) > 127 then
Result := Result + StrToHexStr(AString)
else if AString = ' ' then
Result := Result + '+'
else
Result := Result + AString;
end;
end;
 
谢谢muhx 结贴撒~~~ thx
 
接受答案了.
 

Similar threads

I
回复
0
查看
552
import
I
I
回复
0
查看
629
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部