我必须根据星号(*)拆分字符串。例如,如果我得到一个字符串,"a*a"
那么我必须得到结果"a"
,我通过拆分字符串 API 在 C++ 中实现了这个结果。但是如果我得到一个字符串,"12*12*12*12"
那么我必须得到"12*12"
结果。我有一个想法来实现这一点,方法是采用中间星位并拆分字符串。是否可以通过 STL 正则表达式或任何其他简单的方式来实现。
谢谢拉姆库马尔
在评论之后,我得出结论,split
在这种情况下不太适合。改为使用substr
。
int len = str.length();
string splittedPart = str.substr(len/2 + 1); //second half
如果你确定你总是会有奇数颗星星,找到中间的那个:
std::string input;
std::vector<unsigned> star_positions;
for (unsigned i = 0; i < input.size(); ++i)
{
if (input[i] == '*')
star_positions.push_back(i);
}
unsigned split_position = star_positions[star_positions.size()/2];
std::string input_L = input.substr(0, split_position);
std::string input_R = input.substr(split_position+1, input.size());
为什么不继续在 Star 上拆分并将结果放入向量中。然后您可以轻松地从向量中检索原始字符串的前半部分和后半部分。想想如果你有偶数颗星星会发生什么