【发布时间】:2009-09-11 09:45:32
【问题描述】:
我正在尝试创建通用格式化程序/解析器组合。
示例场景:
- 我有一个 string.Format() 的字符串,例如
var format = "{0}-{1}" - 我有一个用于输入的对象(字符串)数组,例如
var arr = new[] { "asdf", "qwer" } - 我正在使用格式字符串格式化数组,例如
var res = string.Format(format, arr)
我要做的是将格式化的字符串恢复回对象(字符串)数组。类似(伪代码):
var arr2 = string.Unformat(format, res)
// when: res = "asdf-qwer"
// arr2 should be equal to arr
有没有人做过这样的事情?我正在考虑使用正则表达式(修改原始格式字符串,然后将其传递给 Regex.Matches 以获取数组)并为格式字符串中的每个占位符运行它。这是可行的还是有其他更有效的解决方案?
【问题讨论】:
-
未格式化的字符串有多长?
-
@Chris:在合理范围内。 ATM,我只在文件名上使用它。
-
请注意,给出的一般性,结果可能是模棱两可的 - 例如
format='{0}-{1}'和arr = { "as-df", "qw-er" }。可以以三种不同的方式取消格式化。您需要定义如何处理歧义,或者限制格式字符串和值的内容。 -
您可以使用正则表达式捕获组轻松实现此目的:stackoverflow.com/questions/906493/…