0

我试图从 wxWidgets 中的一些 html 代码中提取一个子字符串,但我无法让我的方法正常工作。

to_parse 的内容:

[HTML代码]

<html><head></head><body><font face="Segue UI" size=2 .....<font face="Segoe UI"size="2" color="#000FFF"><font face="@DFKai-SB" ... <b><u> the text </u></b></font></font></font></body></html>

[/HTML CODE](对不起格式)

wxString to_parse = SOStream.GetString();

size_t spos = to_parse.find_last_of("<font face=",wxString::npos);
size_t epos = to_parse.find_first_of("</font>",wxString::npos);

wxString retstring(to_parse.Mid(spos,epos));
wxMessageBox(retstring);    // Output: always --->  tml>

由于 HTML 中有几个字体标签 to_parse 变量我想找到最后一个<"font face=的位置和第一个<"/font>"关闭标签的位置。

出于某种原因,只能得到相同的意外 输出 tml>

任何人都可以找出原因吗?

4

2 回答 2

0

谢谢你的回答。是的,你是对的,我一定是觉得 Substring() / substr() / Mid() 需要两个 wxStrings 作为参数,但事实并非如此。

wxString to_parse = SOStream.GetString();

to_parse = to_parse.Mid(to_parse.find("<p "));   disregarts everything before "<p "
to_parse = to_parse.Remove(to_parse.find("</p>"));  removes everything after "</p>"

wxMessageBox(to_parse);  // so we are left with everything between "<p"  and  "</p>" 
于 2013-10-20T09:58:40.223 回答
0

这些方法find_{last,first}_of()并不像您认为的那样做,它们的行为方式与同名std::basic_string<>方法相同,并找到您传递给它们的字符串的第一个(或最后一个)字符,请参阅文档

如果要搜索子字符串,请使用find().

于 2013-10-19T23:12:01.063 回答