我正在尝试找出一种合适的方法来用 &nbps; 替换彼此相邻的空格 (\x20)。
string SPACE = "\x20";
string str = "<span style=\"color:#f00;\""> Three Spaces</span>";
size_t pos = str.find(SPACE, 0);
size_t prev = 0;
size_t start = 0;
size_t length = 0;
while (pos != string::npos)
{
prev = pos;
if (prev == (start + 1))
{
// this is where i start to get lost...
}
else
{
start = pos;
}
pos = str.find(SPACE, pos + 1);
}
所以我对 str 的最终结果是
<span style="color:#f00;"> Three Spaces</span>
请注意,跨度内的空间保持不变。
我很难思考跟踪有多少空间彼此相邻的逻辑。我打算找到起始位置,存储它找到的空格数的“长度”,然后使用位置和长度执行 substr()。
最佳答案
您可以使用 while 循环将每次出现的 \x20\x20
替换为
,直到没有任何东西可以替换为止。 IIRC HTML 尊重
旁边的单个空格,因此您不必担心奇数组的空格。如果您确实需要替换每个空格簇,可以将 \x20
替换为
after 替换所有双空格。
关于C++ 替换彼此相邻的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875745/