如何将一文本里的内容,里第一个连续空格改为一个空格,后面的空格改为逗号?
------------------文本内容-------------------------------
AAAAAA B2 B4 B5 B8 B11
CCCCC B12 B14 B16 B17
XXXX E10 E15 ------------------要修改文本为---------------------
AAAAAA B2,B4,B5,B8,B11
CCCCC B12,B14,B16,B17
XXXX E10,E15 //----------------代码--------------------------
procedure TTestForm.Button1Click(Sender: TObject);
var
ss:TStringList;
s:string;
p,i,j:Integer;
str1,str2:string;
begin
ss:=Tstringlist.create;
//ss.text:='AAAAAA B2 B4 B5 B8 B11 ';
ss.LoadFromFile(Edit1.Text);
for i:=0 to ss.Count-1 do
begin
if ss.Count > StringGrid1.RowCount then
StringGrid1.RowCount:=StringGrid1.RowCount+1; //加行
//要修改的参考代码
{ for j:=0 to ss. -1 do
begin
s:=ss[j];
p:=pos(' ',s);
str1:=copy(s,1,p-1);
str2:=copy(s,p+1,length(s));
end; }
stringgrid1.Rows[i+1]:=bb;
end;
ShowMessage(str1);
ShowMessage(str2);
exit;
end;
------------------文本内容-------------------------------
AAAAAA B2 B4 B5 B8 B11
CCCCC B12 B14 B16 B17
XXXX E10 E15 ------------------要修改文本为---------------------
AAAAAA B2,B4,B5,B8,B11
CCCCC B12,B14,B16,B17
XXXX E10,E15 //----------------代码--------------------------
procedure TTestForm.Button1Click(Sender: TObject);
var
ss:TStringList;
s:string;
p,i,j:Integer;
str1,str2:string;
begin
ss:=Tstringlist.create;
//ss.text:='AAAAAA B2 B4 B5 B8 B11 ';
ss.LoadFromFile(Edit1.Text);
for i:=0 to ss.Count-1 do
begin
if ss.Count > StringGrid1.RowCount then
StringGrid1.RowCount:=StringGrid1.RowCount+1; //加行
//要修改的参考代码
{ for j:=0 to ss. -1 do
begin
s:=ss[j];
p:=pos(' ',s);
str1:=copy(s,1,p-1);
str2:=copy(s,p+1,length(s));
end; }
stringgrid1.Rows[i+1]:=bb;
end;
ShowMessage(str1);
ShowMessage(str2);
exit;
end;
解决方案 »
- 弹出的对话框被窗体挡住了,该怎么处理?
- 在fastreport里怎么求得一行的总和?请各位帮忙看看~
- 关于修改密码的简单问题
- FastReport3.0 报表如何实现一页打印两联?
- Winexec的机制问题,请懂的哥哥姐姐告诉我啊。
- Indy
- 如何屏蔽另一运行程序中的RadioGroup1的Click事件
- 请问:如何把一个过程赋给一个动态创建的控件的事件(例如要处理动态控件activeimage的click事件具体该怎么做)?
- 自动计算字段如何排序?
- DLL中能不能不用ShareMem单元?
- 有没有将浮点型直接转换成没小数点的整形,且数据不缺失
- 怎样在程序运行中改变combobox组件的Items值?
//把单行文本的处理写成下面这个函数
function LineProcess(S: String): String;
var
i, j, k: Integer;
begin
i := 1;
while (i < Length(S)) and (S[i] <> ' ') do inc(i);
j := i + 1;
while (j < Length(S)) and (S[j] = ' ') do inc(j);
for k := j + 1 to Length(S) do
if S[k] = ' ' then S[k] := ',';
Result := Copy(S, 1, i) + Copy(S, j, Length(S) - j + 1);
end;//调用的例子:
ShowMessage (LineProcess('AAAAAA B2 B4 B5 B8 B11'));
后面..呵呵
AStr1 := copy(AStr,1,pos(' ',AStr));
AStr2 := copy(AStr,pos(' ',AStr)+1,length(AStr)-length(AStr1));
AStr2 := trim(AStr2);
AStr2 := StringReplace(AStr2 , ' ', ',', [rfReplaceAll]);
Res := AStr1 + AStr2;