C++ Builder - 根据其中的某些单词将 Link 复制到字符串

C++ Builder - Copy a Link to a String Based On Certain Words in It

这是我第一次 post 来这里。

我在 MemoTStringList 中有 4 个 link:

http://website.com/text/book&id=20/programming
http://website.com/text/book&id=10/programming
http://website.com/text/book&id=40/programming
http://website.com/text/book&id=30/programming

我想要做的是根据其 "id number" 复制每个 link,如上所示以分隔字符串,而不是基于其 TMemoTStringList 中的索引。

这是因为每个link的id号总是每次或动态变化(它是一个随机id)。

所以让我们说:

  1. 如果 link 包含 id=10,则应将其复制到名为 "id10" 的字符串中。
    • 最终结果是id10包含:http://website.com/text/book&id=10/programming
  2. 如果 link 包含 id=30 那么它应该被复制到一个名为 "id30" 的字符串中。
    • 最终结果是id30包含:http://website.com/text/book&id=30/programming
  3. 以此类推,直到所有 link 都被复制到一个单独的不同字符串中。

我尝试使用 substring 函数解决这个问题,例如:

int p = 0;
String id10, id20, id30, id40;
p = Memo1->Lines->Text.Pos("id=20");
if (p != 0)
{
  id10 = Memo1->Lines->Text.SubString(p + 1, Memo1->Lines->Text.Length());
  ShowMessage(id10);
}

......

不幸的是,它总是失败。因为我是 c++ 和那种新手,但我不知道如何处理所有这些。对不起。

所以我需要你的帮助来处理这种情况。

非常感谢。

从文本 属性 调用 .Pos() 是获取备忘录控件整个文本中找到的字符串位置的索引。以下是如何在 C++ Builder 中从 TMemo 中读取每一行的简短示例:

AnsiString id10;

for (int i = 0; i < Memo1->Lines->Count; i++)
{
    AnsiString line = Memo1->Lines->Strings[i];

    if (line.Pos("id=10") > 0)
    {
        id10 = line;
        ShowMessage(id10);
    }
}

使用上面的代码片段,你应该能够推断出如何让它做你想做的事。