删除特定字符后的文本

时间:2013-12-31 13:58:49

标签: string delphi

我在TEdit框中有文字: '955-986,总计= 32'

如何删除逗号后面的所有文字,因此只会留下'955-986'

我试图限制TEdit长度,但它没有按我希望的那样工作。

4 个答案:

答案 0 :(得分:3)

您可以使用此代码:

var 
    tmpStr:string;
    commaPosition:integer; 
begin
  tmpStr := Edit1.Text;
  commaPosition := pos(',',tmpStr);
  tmpStr := copy(tmpStr,1,commaPosition-1);
  Edit1.Text := tmpStr;
end;

答案 1 :(得分:2)

我不是Delphi程序员(不再是)。但是,我猜你从TEdit-Box对象的Text-Property中获取String,搜索第一次出现的,并获取其索引,并用子串替换TEdit-Box中包含的Text。当前字符串的开头到找到的索引。

edit.Text := Copy(edit.Text, 1, Pos(',', edit.Text)-1);

来源:

答案 2 :(得分:2)

如果没有逗号怎么办?完整的非切割字符串或空字符串?

以下是您限制字符串长度的想法,但仅在找到至少一个逗号时才应用。

var 
    tmpStr:string;
    commaPosition:integer; 
begin
  tmpStr := Edit1.Text;
  commaPosition := pos(',',tmpStr);
  if commaPosition > 0 then begin
     SetLength(tmpStr, commaPosition - 1);
     Edit1.Text := tmpStr;
  end;
end;

答案 3 :(得分:1)

TEdit.Text是一个属性,不能作为var参数传递。但是,一旦引入临时变量,就可以委托检查从Pos返回到Delete的字符索引,它将处理所有情况。

var
  S: string;
begin
  S := Edit1.Text;  // try '955-986, total = 32' and '955-986; total = 32'
  Delete(S, Pos(',', S), MaxInt);
  Edit1.Text := S;
end;