解析字符串,其中"separator"可以是数据的一部分?

Parse string where "separator" can be part of data?

本文关键字:数据 一部分 separator 字符串 其中      更新时间:2023-10-16

我有这样的标准字符串:

用户名:消息

乍一看,这似乎是一个简单的问题,但这个问题在于名称的最后一个字符可能是":",字符串的消息部分的第一个字母也可能是":"。用户的名称中也可以有空格。

所以一个用户可能是名字"某个名字:"并可能键入消息 ' : 您好'

看起来像:"一些名字: : : 你好"

不过,我确实有用户名列表(向量)。

鉴于此,有没有办法从这种字符串中提取用户名?(理想情况下,不必循环访问用户列表)

谢谢

尝试像 (w+?): w+ 这样的正则表达式。

如果您无法确定用户名不包含":"字符,并且希望避免每次都迭代整个列表进行检查,则可以尝试快捷方式。

只保留包含特殊字符的用户名的向量(我想象这是所有用户名的一小部分)。首先检查这些,如果找到匹配项,请取 [用户名] 后面的字符串:。否则,您可以简单地对冒号进行天真的拆分。

我会使用字符串标记

string text = "token, test   string";
char_separator<char> sep(":");
tokenizer< char_separator<char> > tokens(text, sep);
BOOST_FOREACH(string t, tokens)
{
    cout << t << "." << endl;
}

我处理这个问题的方法是简单地找到第一个冒号。在那里拆分字符串,然后修剪剩余的两个字符串。

我不完全清楚为什么会有额外的冒号以及它们是否是值的一部分。如果需要删除它们,那么您还需要将它们删除。