【发布时间】:2009-01-09 13:22:44
【问题描述】:
我有一堆字符串,例如:
"Hello, here's a test colon:. Here's a test semi-colon;"
我想将其替换为
"Hello, here's a test colon:. Here's a test semi-colon;"
目前我正在使用boost::regex_search 匹配&#(\d+);,在依次处理每个匹配项时构建一个字符串(包括附加自上次找到的匹配项以来不包含匹配项的子字符串)。
谁能想到更好的方法?我对非正则表达式方法持开放态度,但在这种情况下,正则表达式似乎是一种相当明智的方法。
谢谢,
Dom
【问题讨论】:
-
实体中的数字不是 ASCII。它是 Unicode 代码点编号,可以在 0-255 范围之外。
-
... 在这种情况下,我们大概可以保持不变。 (顺便说一句,可打印的 ASCII 范围是 32-126)
-
如果已经有一个库(甚至可能作为 boost 的一部分)将 XML 实体转换为它们的 utf-8/utf-16 等效项,我不会感到惊讶。
-
如果知道这些实体的正式名称是数字字符引用 (NCR),那就太好了。见en.wikipedia.org/wiki/Numeric_character_reference - PEZ