2016-04-13 81 views
1

我正在写一个函数,它的确如此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中的复合格式字符串?

+0

为什么noy使用String.Format? – lordkain

+2

我碰巧写了一些这样的: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

为什么不搜索“{0}”既然你只使用一个元素,如果它没有它,将不会工作 – Claudius

回答

相关问题