delphi 如何分割文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 如何分割文本相关的知识,希望对你有一定的参考价值。

123-数字
abc-英文

以“-”号为界限分割为2个部分,我要分别放到某2个位置。
for i := 0 to list.Count - 1 do
begin
ShowMessage(list[i]);
Form1.ComboBox1.Items.Add(list[i]);
end;

上面代码已经可以把每行内容添加到下拉菜单。

如何再分析每条内容以‘-’号分割,分别添加到combobox1和combobox2.

function split(s: string; Ch: string):TStringList ; //前一个参数是操作的字符串,后一个是分隔符
var
Temp:String;
I:Integer;
chLength:Integer;

begin
Result:=TStringList.Create;
//如果空字符串则返回空列表

if s='' then Exit;
Temp:=s;
I:=Pos(ch,s);
chLength :=Length(ch);

while I<>0 do
begin
Result.Add(Copy(Temp,0,I-chLength+1));
Delete(Temp,1,I-1+chLength);
I:=pos(ch,Temp);
end;

Result.Add(Temp);

end;

我来回答楼主的追问吧
用法
var
s:TStringList;

for i := 0 to list.Count - 1 do
begin
ShowMessage(list[i]);
s:=split(List[i],'-');
Form1.ComboBox1.Items.Add(s[0]);
Form1.ComboBox2.Items.Add(s[1]);
end;
这样就可以分别添加到对应的COMBOBOX控件中了
参考技术A s1:="123-数字";
str1:=copy(s1,1,pos("-",s1)-1);
str2:=copy(s1,pos("-",s1)+1,length(s1));
参考技术B type
TArray_String = array of string;

function SplitStringToArray(
sSource : string;
var asResult : TArray_String;
acSplitter : string = #$09#$20
) : Integer;
type
TDoStatus = ( ssScanSplitter, ssSkipSplitter );
function IsSplitter( C : Char ) : Boolean;
var
i : Integer;
begin
Result := True;
for i := 1 to Length( acSplitter ) do
if C = acSplitter[i] then
Exit;
Result := False;
end;
var
i : Integer;
L : Integer;
iStart : Integer;
x : TDoStatus;
begin
Result := 0;
if ( sSource = '' ) or ( acSplitter = '' ) then
Exit;
sSource := sSource + acSplitter[1];
L := 0;
iStart := 1;
x := ssScanSplitter;
for i := 1 to Length( sSource ) do
case x of
// 略过分隔符
ssSkipSplitter:
if not IsSplitter( sSource[i] ) then
begin
iStart := i;
x := ssScanSplitter;
end;
// 查找分隔符
ssScanSplitter:
if IsSplitter( sSource[i] ) then
begin
if i > iStart then
begin
Inc( L );
SetLength( asResult, L );
asResult[ Result ] := Copy( sSource, iStart, i - iStart );
Inc( Result );
end;
x := ssSkipSplitter;
end;
end;
end;
调用方法:
var
RequiredStrings : TArray_String;
n : Integer;
......
begin
n := SplitStringToArray( 你的字符串, RequiredStrings, '-' );
// n等于拆成了几段,你的例子中将会返回2
for i := 0 to n - 1 do
ShowMessage( RequiredStrings[i] );
end;

如何判断delphi文本框输入的是数字

如何判断delphi文本框输入的是数字,或者说怎么能让文本框只允许输入数字

try
  StrToInt('abc');
  ShowMessage('正常');
except
  ShowMessage('异常,不是数字');
  Exit;
end;

参考技术A procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
a:integer;
begin
if not (key in ['0'..'9',#8]) then
begin
a:=Application.MessageBox('请输入数字','提示信息',MB_ok);
if a=6 then
begin
end
else
begin
end;
key:=#0;
end
else
begin
end;
end;

以上是关于delphi 如何分割文本的主要内容,如果未能解决你的问题,请参考以下文章

用Delphi制作文本文档程序,在文本中内容加密,我的思路是把文本内容打成乱码,在点击“解密”变回原来的

delphi保文本文件怎么选择编码UTF-8格式

delphi 如何分割文本

delphi如何按固定的分隔符来分割字符串,并且把分割出来的字符串放到数组中?具体的代码如何实现?

Delphi里面字符分割函数是啥 如何分割以 为分割的字符串

如何在自定义 delphi 组件中实现 stringlist 属性?