当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中针对其目标参数类型验证复合格式字符串?

如何解决《如何在C#中针对其目标参数类型验证复合格式字符串?》经验,为你挑选了1个好方法。

给定用户提供的复合格式字符串(用于String.Format)和表示将用于格式化复合格式字符串的参数的一组类型,如何检查用户提供的值是否有效?

它应该是很容易地创建一个正则表达式来检查参数占位符的一般语法匹配" {index[,alignment][:formatString]}"每个文档.并且更难以验证复合格式字符串中占位符的索引是否小于实际的类型化参数数量(即它们不引用将不会给出的参数).但是,如果已知传入参数的类型,则还应该可以验证" :formatString"是否适合这些类型.

例如,{0:dddd MMMM}当第一个参数类型(0索引)是数字(String.Format("{0:dddd MMMM}", 1234)产生" dddd MMMM")时,您要验证用户未指定" "作为格式字符串.:formatString按类型的" "选项数量太大,无法手动检查所有内容.还有其他方法吗?或者您是否只需要与可能指定错误格式字符串的用户一起生活?

假设有没有自定义IFormatProvider,ICustomFormatterIFormattable实现在这里打球.只是.NET Framework中已有的基本类型.用于解决自定义内容的奖励积分.



1> Marc Gravell..:

AFAIK没有内置的方法.

您可以手动编写每个常见案例,但我不推荐它.

(编辑)一个实用的选项可能是try/catch- 当用户输入格式时尽早测试格式....

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有