问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

delphi 如何把一串字符串的某个值的前几个字符保留下来

发布网友 发布时间:2022-05-08 06:31

我来回答

4个回答

热心网友 时间:2024-01-19 06:19

可通过函数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控件,效果如下图:

热心网友 时间:2024-01-19 06:20

狂晕,一个so easy的东东用得着这样解决吗
var
s: string;
ca: array of char;
i, len: integer;
begin
s := 'abcde';
s := copy(s, 1, 2);
len := Length(s);
SetLength(ca, len);
for i := 0 to len - 1 do
ca[i] := s[i+1];
end;
//ca就是你所要的
//另外,在delphi中,String类型本身就可以看作是一个以1为基数的数组,

热心网友 时间:2024-01-19 06:20

这个嘛用的基本是字符串的处理函数
i,j:integer;
s1,s2:string;
arr :array of char;
begin
s1:="abcdef"; //这步你当然可以用s1来动态获得它的值比方说 //s1:=edit2.text;
i:=pos('c',s1);
s2:=copy(s1,1,length(s1-i-1));
setlength(arr,i-1);
for j:=0 to i-1do
begin
arr[j]:=copy(s2,j+1,1); //其实s2本身也可以当成数组来用了
end;
end;

热心网友 时间:2024-01-19 06:21

不知道楼上的朋友程序调了没.大眼一看就好几处错误.真是不应该啊....
我给一段代码并附上测试例程.
//Delphi 7.0+win2k下通过

function myfun(str: string): PChar;
var
i: integer;
begin
i := Pos('c', str);
GetMem(Result, i); //注意,调用完该函数后,要调用FreeMem释放内存
ZeroMemory(Result, length(Result));
CopyMemory(Result, @str[1], i-1);
end;

procere TForm1.Button1Click(Sender: TObject);
var
Str: string;
p: PChar;
i: integer;
begin
Str := 'aabcdefg'; //测试范例字符串
p := myfun(Str); //获取'c'之前的字符串并转换为字符数组(指针)
for i:=0 to Length(p) do //对两种方式访问结果的每一个元素
begin
Memo1.Lines.Add(p[i]); //按数组访问
Memo1.Lines.Add((p+i)^); //按指针访问
end;
Memo1.Lines.Add(p); //支持字符串式访问的自动转换

FreeMem(p); //对应GetMem.不然会内存泄漏
end;

end.

热心网友 时间:2024-01-19 06:19

可通过函数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控件,效果如下图:

热心网友 时间:2024-01-19 06:20

狂晕,一个so easy的东东用得着这样解决吗
var
s: string;
ca: array of char;
i, len: integer;
begin
s := 'abcde';
s := copy(s, 1, 2);
len := Length(s);
SetLength(ca, len);
for i := 0 to len - 1 do
ca[i] := s[i+1];
end;
//ca就是你所要的
//另外,在delphi中,String类型本身就可以看作是一个以1为基数的数组,

热心网友 时间:2024-01-19 06:20

这个嘛用的基本是字符串的处理函数
i,j:integer;
s1,s2:string;
arr :array of char;
begin
s1:="abcdef"; //这步你当然可以用s1来动态获得它的值比方说 //s1:=edit2.text;
i:=pos('c',s1);
s2:=copy(s1,1,length(s1-i-1));
setlength(arr,i-1);
for j:=0 to i-1do
begin
arr[j]:=copy(s2,j+1,1); //其实s2本身也可以当成数组来用了
end;
end;

热心网友 时间:2024-01-19 06:21

不知道楼上的朋友程序调了没.大眼一看就好几处错误.真是不应该啊....
我给一段代码并附上测试例程.
//Delphi 7.0+win2k下通过

function myfun(str: string): PChar;
var
i: integer;
begin
i := Pos('c', str);
GetMem(Result, i); //注意,调用完该函数后,要调用FreeMem释放内存
ZeroMemory(Result, length(Result));
CopyMemory(Result, @str[1], i-1);
end;

procere TForm1.Button1Click(Sender: TObject);
var
Str: string;
p: PChar;
i: integer;
begin
Str := 'aabcdefg'; //测试范例字符串
p := myfun(Str); //获取'c'之前的字符串并转换为字符数组(指针)
for i:=0 to Length(p) do //对两种方式访问结果的每一个元素
begin
Memo1.Lines.Add(p[i]); //按数组访问
Memo1.Lines.Add((p+i)^); //按指针访问
end;
Memo1.Lines.Add(p); //支持字符串式访问的自动转换

FreeMem(p); //对应GetMem.不然会内存泄漏
end;

end.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
基督山伯爵读后感读书笔记800字 基督山伯爵学生读书笔记 关于天冷幽默说说 家户如何测甲醛 甲醛检测方法都有哪些 测甲醛方法有哪些 微商是什么?怎么加入微商? ...CPU 1.80GHz 主板 宏碁 Aspire V5-471G(Intel Ivy Bridge) ...i5-3337U CPU 1.80GHz 主板 宏碁 Aspire V5-471G 4G内存,能_百度知 ... 宏碁V5-471G-53334G50Mass产品简介 Delphi的分割字符串或提取字符串? delphi 中截取字符串怎么做 有两个汉字 求详解~~~ delphi,字符串截取。 delphi 字符串截取问题 如何把头和尾去掉 结果只取出中间的数字部分? delphi中截取字符串问题 delphi 如何不出乱码的截取字符串? 冬天怎么用空调除湿? 冬天怎么用空调除湿,室温在13度左右,打开除湿功能明显温度降低了,该怎么解决?或者用什么模式? 我一个朋友的手机号换了,卡都是实名的能通过以前的号查到现在的号码嘛? 知道他原来的手机号如果换号了我能查询到吗有她? 如果他换了手机账号还能查到手机吗? 换了手机号还能查出谁的实名制吗 之前用的手机号码没了可以查到吗? 换手机号了别人能找到你吗 宁德市万科物业发展有限公司怎么样? 福州万科物业管理公司怎样 厦门市万科物业服务有限公司怎么样? 深圳市万科物业服务有限公司福州分公司怎么样? 乌鲁木齐那里有买拜耳的蟑螂药的 请问下家里有蟑螂怎么办啊?怎样才能消灭干净呢?也不知到底是从哪儿爬来的?感觉最近好像是越来越多呢... 【delphi】请教各位老师,这样的字符串应该如何截取。? delphi 实现字符串截取.... delphi5中如何使用包涵中文字符的字符串截取 Delphi如何分割如下的字符串 delphi 如何截取一行字符串里面第二个空格之前的内容? delphi 如何往后开始截取字符串 朋友发来微信文件,但是打不开,提示要用第三方应用打开,怎么办?什么是第三方应用。_百度问一问 朋友发来微信文件,但是打不开,提示要用第三方应用打开,怎么办?什么是第三方应用。_百度问一问 中药师考试内容 中药师职称考试的考试科目 手机上一些文件打不开让我们使用第三方打开是什么意思? 使用第三方打开应用是什么意思要流量吗 第三方应用打开是什么意思怎么样能打开 您设置了默认应用(vivo 文档),确定跳转到第三方应用打开? 视频反转看不到图像 昨晚梦见女朋友丢金手镯,然后被我找到了.周公解梦 梦见金手镯不见了,后来看都戴在脚上了 梦见自己送给女朋友的金手镯丢了 vivox5pro什么时候上市 vivo x5 pro什么时候上市的