在 Delphi 中使用 SubStr + 提取子字符串复制?

发布于 2025-01-17 21:08:31 字数 360 浏览 0 评论 0原文

我在delphi中具有一个功能,

var

  Ramoativ : String;
  filteredRamoativ: String;

begin

  Ramoativ := '15 - Serviços';

  filteredRamoativ := copy(Ramoativ, 1, SubString(Ramoativ, 1, '-'));

end;

输出必须为= 15

字符串可以具有2位数以上的数字,因此RamoAtiv可以是'13823849 -Serviços',但是 - 始终将数字与文本分开。

我的想法是使用功能来定位“ - ”的位置,并将其用作复制的论点,但是我很难做到这一点

I have a function in Delphi

var

  Ramoativ : String;
  filteredRamoativ: String;

begin

  Ramoativ := '15 - Serviços';

  filteredRamoativ := copy(Ramoativ, 1, SubString(Ramoativ, 1, '-'));

end;

The output must be = 15

The String can have more than 2 digits number, so Ramoativ can be '13823849 - Serviços', but the - will always separate the number from text.

My idea is using a function to locate the position of "-" and use it as an argument for copy, but I am having difficulties doing it

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少钕鈤記 2025-01-24 21:08:31

您的想法是正确的方法。但是,Delphi没有substring()函数。要在另一个字符串中搜索子字节的位置,请使用 system.pos.pos.pos.pos.pos.pos.pos.pos.pos.pos () 函数,例如:

var
  Ramoativ : String;
  P: Integer;
  filteredRamoativ: String;
begin
  Ramoativ := ...;
  P := Pos('-', Ramoativ);
  if P <> 0 then
    filteredRamoativ := Trim(Copy(Ramoativ, 1, P-1))
  else
    filteredRamoativ = '';
end;

另外,delphi具有 strutils.leftstr() 功能是从字符串的左侧提取子字符串,例如:

var
  Ramoativ : String;
  P: Integer;
  filteredRamoativ: String;
begin
  Ramoativ := ...;
  P := Pos('-', Ramoativ);
  if P <> 0 then
    filteredRamoativ := Trim(LeftStr(Ramoativ, P-1))
  else
    filteredRamoativ = '';
end;

Your idea is the correct way to go. However, Delphi does not have a SubString() function. To search for the position of a substring in another string, use the System.Pos() function instead, eg:

var
  Ramoativ : String;
  P: Integer;
  filteredRamoativ: String;
begin
  Ramoativ := ...;
  P := Pos('-', Ramoativ);
  if P <> 0 then
    filteredRamoativ := Trim(Copy(Ramoativ, 1, P-1))
  else
    filteredRamoativ = '';
end;

Also, Delphi has a StrUtils.LeftStr() function to extract a substring from the left-hand edge of a string, eg:

var
  Ramoativ : String;
  P: Integer;
  filteredRamoativ: String;
begin
  Ramoativ := ...;
  P := Pos('-', Ramoativ);
  if P <> 0 then
    filteredRamoativ := Trim(LeftStr(Ramoativ, P-1))
  else
    filteredRamoativ = '';
end;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文