有没有一种好方法可以通过多个分隔符拆分字符串(在 C 或 C++ 中),同时将分隔符保留为拆分字符串的一部分?我发现这样做的唯一方法是使用正则表达式,我宁愿不必为了做到这一点而引入另一个库?(我将 STL 用于字符串,而不是使用 Boost)。
问问题
1563 次
2 回答
4
没有正则表达式,虽然我不确定它是更快还是更慢:
vector<string> split(string& stringToSplit)
{
vector<string> result;
size_t pos = 0, lastPos = 0;
while ((pos = stringToSplit.find_first_of(";,|", lastPos)) != string::npos)
{
result.push_back(stringToSplit.substr(lastPos, pos-lastPos+1));
lastPos = pos+1;
}
result.push_back(stringToSplit.substr(lastPos));
return result;
}
于 2013-07-04T18:48:27.527 回答
1
您可以使用前瞻来做到这一点。用表达式拆分:
(?=,)
对于逗号分隔符,并添加(可能在字符类[ ... ]
中:)要拆分的其他分隔符。
因此,this,is,an,example
变为:(this
,is
,an
,example
即分隔符与它后面的术语一起使用)
否则,您将使用向后看(意思是(?<=,)
)来获得:this,
is,
an,
example
。
于 2013-07-04T18:25:55.440 回答