C 字符串格式化等效项

标签 c translation string-formatting

在我从事的一个项目中,我们最近遇到了一个问题,我们需要检查 2 个字符串是否具有字符串格式(用于翻译)。

/* A simple example: */
str = "%.200sSOMETEXT%.5fSOMEMORETEXT%d%ul%.*s%%";

/* Should be able to be validated to be the equivalent of: */
str = "%.200sBLAHBLAH%.5ftest%d%ul%.*s%%MORETEXT";

/* and... */
str = "%.200s%.5f%d%ul%.*s%%";

/* but not... */
str = "%.5f%.200s%d%ul%%%.*s";

所以我的问题是:

有没有办法验证 2 个字符串具有等效的字符串格式?

也许答案是一些非常好的正则表达式,或者现有的工具或者来自另一个项目的一些示例代码。我无法想象我们是第一个遇到这个问题的项目。

最佳答案

有趣的问题。

我会尝试实现一个函数,从格式化字符串中删除非格式化字符,从而只留下格式说明符。希望这应该足够规范以进行比较。

也许您需要进一步删除诸如字段宽度和(如果支持的话)参数索引之类的内容,因为这些内容对于不同的翻译会有所不同。

想出剥离函数应该不难,格式说明符非常简单。删除字符,直到找到 %,然后检查以下字符,如果是 %,则删除两个字符,否则复制字符,直到找到“最终”说明符之一(dfsu 等)。

关于C 字符串格式化等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420841/

相关文章:

c - 矩阵优化 - 使用内在函数和循环展开时出现段错误

c - 如何声明任意大小的数组

c - 二维矩阵遍历——最优路径内存

c# - 国际化我的独立应用程序

kotlin - Kotlin语言翻译器中的“<”字符不起作用

java - 我遇到前导零问题

c - 在格式化输出函数中使用 $

c++ - 使用 OpenCV(基于霍夫变换或其他功能)编写稳健(颜色和大小不变)的圆检测

sql - 我怎么知道EF将Linq查询转换成什么?

python - python 字符串格式中的元组?