我正在写一个函数,它的确如此composite formatting。这是vb.net,但是对于C#来说,我想是这样。我想检查一下,如果message
是一个复合格式化字符串,因为如果它不是,我可以为其余参数创建一个不同的输出。如何检查给定的字符串是否为复合格式字符串
public sub write(message as String, paramarray paramlist() as Object)
if paramlist.Length = 0 then
writeString(message)
else
if isCompositeFormatString(message) then
writeString(String.Format(message, paramlist))
else
' ... make different output for paramlist
end if
end if
end sub
我看到两种方法来检查:
1)做一个正则表达式,以查找{...}字符串
2)尽量String.Format
,赶上FormatException
来处理这种情况
问题是,是否有一个函数可以识别.net中的复合格式字符串?
为什么noy使用String.Format? – lordkain
我碰巧写了一些这样的:https://github.com/Vannevelj/VSDiagnostics/blob/develop/VSDiagnostics/VSDiagnostics/VSDiagnostics/Diagnostics/Strings/PlaceholderHelpers.cs它在一些Roslyn分析器中使用:https ://github.com/Vannevelj/VSDiagnostics/tree/develop/VSDiagnostics/VSDiagnostics/VSDiagnostics/Diagnostics/Strings但是,不,没有内置函数来验证某些东西是否带有占位符的字符串。我用正则表达式的方法 –
为什么不搜索“{0}”既然你只使用一个元素,如果它没有它,将不会工作 – Claudius