主题:获取字符串问题 急在线等
LOVELYLIN
[专家分:0] 发布于 2006-05-07 16:20:00
现有字符串
#01#333......
我想获取
string stype:=01
string msg:=333....
代码怎么实现
哪位大虾帮忙一下 感谢万分!!!!!
回复列表 (共5个回复)
沙发
aizaixiiii [专家分:2130] 发布于 2006-05-07 17:08:00
function SplitEx(const Str {需要拆分的文章}, Delimiters {拆分关键字,回车.?!等}: string): TStringList;
var
ss: WideString;
i, St: integer;
function IsDelimiter(const Delimiters, c: string): Boolean;
begin //判断是否为拆分关键字
result := StrScan(PChar(Delimiters), c[1]) <> nil;
end;
begin
Result := TStringList.Create;
with Result do
begin
Clear; Sorted := True; Duplicates := dupIgnore;
end;
if Length(Str) < 1 then exit;
ss := Str; //双字符支持,纯英文可以去掉
St := -1;
for i := 1 to Length(ss) do
if IsDelimiter(Delimiters, ss[i]) then
if St <> -1 then
begin
Result.Add(Trim(Copy(ss, St, i - St)));
St := -1;
end
else
if St = -1 then St := i;
if St <> -1 then Result.Add(Copy(ss, St, Length(Str)));
end;
板凳
huitian [专家分:1410] 发布于 2006-05-07 17:50:00
var
boxA,boxB,boxC:array[0..127]of char;
s:array[1..2]of array[0..127]of char;
temptext:array[0..127]of char
begin
strpcopy(temptext,'#01#333......');
strpcopy(boxA,trim(temptext));
for i:=1 to 2 do
begin
strpcopy(boxB,strscan(boxA,'#'));
strpcopy(boxC,leftstr(boxA,length(trim(boxA))-length(trim(boxB))));
strpcopy(boxA,trim(boxB));
strpcopy(s[i],trim(boxC));
end;
string stype:=s[1]
string msg:=s[2]
3 楼
LOVELYLIN [专家分:0] 发布于 2006-05-07 18:20:00
有点难度哦 具体的问题这样的
从服务器端获取信息 Msg:=socket.receivetext
receivetext内容格式为#01#..........或者#02#...........
现在要分离出01, ......或者02,.......
怎么实现哦 最好简单点的
4 楼
aizaixiiii [专家分:2130] 发布于 2006-05-08 09:21:00
socket.receivetext的内容!晕
5 楼
haptis [专家分:1260] 发布于 2006-05-08 11:16:00
汗 比方你收到的字符串是S 那么S[1]就是#01或者#02
用个if 就分开了哎
我来回复