delphi 获取字符串之间多个字符内容

例如:‘你好:嗯;你好:好;多谢:谢谢;知道:不知道;好了:没有;’字符串中‘:’和’;‘之间的字符也是是‘嗯.好.谢谢.不知道.没有‘回去这些字... 例如: ‘你好:嗯;你好:好;多谢:谢谢;知道:不知道;好了:没有;’
字符串中‘:’和’;‘之间的字符
也是是‘嗯. 好. 谢谢 . 不知道 .没有‘ 回去这些字
展开
 我来答
KDERP
2016-01-12 · 知道合伙人软件行家
KDERP
知道合伙人软件行家
采纳数:266 获赞数:699
2016-2017荣获 金达软件(广州) 最佳项目负责人

向TA提问 私信TA
展开全部

可通过函数POS及COPY配合使用实现该功能。

一、函数说明:

POS:获取特定字符所处字符串的位置,返回数据类型为整型。POS共有两个参数:POS(特定字符或字符串,源字符串)。

COPY:字符串截取,返回数据类型为字符型。COPY共有三个参数:COPY(源字符串,起始截取位(整型,可为变量),截取位数(整型,可为变量))。

二、实例演示(笔者以截取特定字符‘.'前5位为例),操作如下:

1、添加TEDIT及TBUTTON控件各一个;

2、在TBUTTON控件的单击事件中,写入代码:ShowMessage(Copy(Trim(ed2.Text),Pos('.',Trim(ed2.Text))-6,5));

3、在TEDIT中随便输入一串字符,点击TBUTTON控件,效果如下图:

cb120520025
推荐于2018-03-14 · TA获得超过347个赞
知道小有建树答主
回答量:323
采纳率:0%
帮助的人:569万
展开全部
var
sPos,ePos :integer;
str :WideString;
sl :TStringList;
begin
sl := TStringList.Create;
try
str := '你好:嗯;你好:好;多谢:谢谢;知道:不知道;好了:没有;';
repeat
sPos := Pos(':',str); //查找":"的位置
if sPos > 0 then //判断字符串中是否含有":"
begin
ePos := Pos(';',str); //查找";"的位置
if ePos > 0 then //判断字符串中是否含有";"
sl.Add(Copy(str,sPos + 1,ePos - sPos - 1)) //含有";"就获取":"到";"的字符串
else
begin //不含";" 就直接获取全部字符串 并赋值0给sPos 结束循环
sl.Add(str);
sPos := 0;
end;
str := Copy(str,ePos + 1,Length(str) - ePos);
end;
until sPos = 0;
ShowMessage(sl.Text);
finally
FreeAndNil(sl);
end;
end;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhdove
2010-12-07 · 超过30用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:0
展开全部
建议用正则表达式计算,方便、快捷、简单。
回答完毕,谢谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-12-06
展开全部
如果是汉字,建议将字符串转换为 widestring 然后用pos函数就可以直接去出来了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式