gpt4 book ai didi

c# - 如何根据目标参数类型验证 C# 中的复合格式字符串?

转载 作者:太空狗 更新时间:2023-10-30 00:22:34 27 4
gpt4 key购买 nike

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

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

例如,当第一个参数类型(0 索引)是数字(String.Format("{0:dddd MMMM}", 1234) 产生“dddd MMMM”)。 “:formatString”选项的数量按类型是too large想要手动检查所有内容。还有别的办法吗?或者您是否只需要忍受用户可能指定了错误的格式字符串?

假设没有自定义 IFormatProvider , ICustomFormatterIFormattable在这里发挥作用的实现。只是 .NET Framework 中已有的基本类型。解决自定义问题的奖励积分。

最佳答案

据我所知,没有内置的方法可以做到这一点。

您可以手动编写每个常见案例的代码,但我不推荐这样做。

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

关于c# - 如何根据目标参数类型验证 C# 中的复合格式字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/707163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com