【发布时间】:2011-06-25 09:53:38
【问题描述】:
我必须通过分析格式化结果来启发式地确定格式模式字符串。
例如我有这些字符串:
您有 3 条未读消息。
您有 10 条未读消息。
对不起,戴夫。恐怕我做不到。
对不起,弗兰克。恐怕我做不到。
这个说法是错误的。
我想导出这些格式字符串:
您有 %s 条未读消息
对不起,%s。恐怕我做不到。
这个说法是错误的。
哪些方法和/或算法可以帮助我?
我的第一个想法是使用机器学习的东西,但我的直觉告诉我这可能是一个相当经典的问题。
一些额外的要求:
- 参数的类型无关紧要,即如果参数最初是
%s或%d或者它是否被填充或对齐,我不需要该信息。 - 可以有多个参数(或根本没有)
- 通常数据由数千个格式化字符串组成,但只有几十个格式模式。
【问题讨论】:
-
+1,很棒的问题。顺便说一句,您的意思是“您有 %d 条未读消息”吗?
-
@templatetypedef:是和不是。如果我能确定原始类型,那就太好了,但这不是必需的。但是如果可以找到参数的大致位置,那么确定实际类型应该不难。 (虽然这并不总是正确的,例如 Javas
String.format允许int填写%s) -
@DR- 啊,所以您正试图找到更改的位置。我以为你已经知道了它们在哪里,需要弄清楚需要什么可怕的 %s、%d、%-s、%8d 等组合。不过还是很有趣。
-
你知道有多少个格式字符串吗?他们可以有多个参数吗? (确实很有趣的问题,+1。)
标签: algorithm string language-agnostic pattern-matching format-string