wxString有没有直接提供分割字符串的方法? Topic is solved

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
liuqi5521
Earned some good credits
Earned some good credits
Posts: 103
Joined: Thu Apr 03, 2008 5:35 am
Location: China
Contact:

wxString有没有直接提供分割字符串的方法?

Post by liuqi5521 »

我看了一下文档,好像没有找到。如果没有就得自己写了
Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil »

怎么分割法?

分割成两个子串?
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/
liuqi5521
Earned some good credits
Earned some good credits
Posts: 103
Joined: Thu Apr 03, 2008 5:35 am
Location: China
Contact:

Post by liuqi5521 »

例如
abcdef|efgsad|asdfa|asefas|asdfasd

以 | 为标识,分为5个串出来
liuqi5521
Earned some good credits
Earned some good credits
Posts: 103
Joined: Thu Apr 03, 2008 5:35 am
Location: China
Contact:

Post by liuqi5521 »

我看了一下,wxString的下面四个成员可以帮到我。

wxString AfterFirst(wxChar ch) const
wxString AfterLast(wxChar ch) const
wxString BeforeFirst(wxChar ch) const
wxString BeforeLast(wxChar ch) const

最起码第 1、2 、倒数第1,倒数第2个子串可以很方便的得到。
至于中间的,我要自己想办法得到了。
Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil »

如果你的字符串本来包括 '|'字符,你可用wxStringTokenizer

Code: Select all

wxStringTokenizer tkz(wxT("abcdef|efgsad|asdfa|asefas|asdfasd"), wxT("|"));
while ( tkz.HasMoreTokens() )
{
    wxString token = tkz.GetNextToken();

    // process token here
}
没有的话,至少多次使用wxString::Left()和wxString::Right()可以完成这个任务。

-Utensil
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/
liuqi5521
Earned some good credits
Earned some good credits
Posts: 103
Joined: Thu Apr 03, 2008 5:35 am
Location: China
Contact:

Post by liuqi5521 »

谢谢!
根据你提供的方法,我查了一下文档,又稍微改变了一下用法。

wxArrayString as = ::wxStringTokenize(s,"|");

这也算是一种思路吧。
Post Reply