这是我在这里的第一篇文章。
我在 Memo
或 TStringList
中有 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"
复制每个链接,如上所示以分隔字符串,而不是基于其
TMemo
或 TStringList
中的索引。
这是因为每个链接的id号总是每次或动态变化(它是一个随机id)。
所以让我们说:
- 如果链接包含
id=10
,那么它应该被复制到一个名为"id10"
的字符串中。- 最终结果是
id10
包含:http://website.com/text/book&id=10/programming
- 最终结果是
- 如果链接包含
id=30
,那么它应该被复制到一个名为"id30"
的字符串中。- 最终结果是
id30
包含:http://website.com/text/book&id=30/programming
- 最终结果是
- 以此类推,直到所有链接都被复制到一个单独的不同字符串中。
我已尝试使用 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/