C++ Builder - 根据字符串中的特定单词复制指向字符串的链接

标签 c++ c++builder

这是我在这里的第一篇文章。

我在 MemoTStringList 中有 4 个链接:

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" 复制每个链接,如上所示以分隔字符串,而不是基于其 TMemoTStringList 中的索引。

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

所以让我们说:

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

我已尝试使用 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);
    }
}

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

关于C++ Builder - 根据字符串中的特定单词复制指向字符串的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38043713/

相关文章:

c++ - 在函数中使用 asm,只用字节而不是指令名

c++ - 无法打开文件 XML.XMLINTF.OBJ

c++builder - C++ 中 .dfm 文件的用途是什么

c++ - Cuda中的数组乘法产生错误

c++ - 标签分派(dispatch)结构不能插入对象类型

c# - 如何将用 c/c++ 编写的 exe 引用到 c# 项目?

c++ - 如何从函数中获取对象?

c++ - SQLite。在 C++Builder 6 CodeGuard 中的 sqlite3.c 中有许多 'access overrun' 'arithmetic overrun' 'resource leak'

python - 我应该如何将 Python 嵌入到 C++ Builder/Delphi 2010 应用程序中?

java - 阻止窗口关闭