在我的应用程序中,我向用户提供了一个选项,用于自定义生成的文件的名称。程序读取的格式字符串类似于"yyyyMMdd-%1-%2-%3-%4"
,用户可根据自己的喜好进行自定义。
在这种情况下,日期的格式为yyyyMMdd
,%1
为1000P的旅行号码,%2
是PTTTT的原始代码,%3
是目标代码如PHYUD,而%4
是二级停止代码,如YYYY123。
我在将实际数据和格式转换为自定义字符串时遇到问题。我相信它的日期格式我会被卡住。到目前为止我已经
了sOut = txtFormatPattern.Text
sOut = sOut.Replace("%1", "1000P")
sOut = sOut.Replace("%2", "PTTTT")
sOut = sOut.Replace("%3", "PHYUD")
sOut = sOut.Replace("%4", "YYYY123")
sOut = myDate.ToString(sOut) 'date is July 01, 2007
输出为“20070701-#1000P-PTTTTP12YUD(YYYY123)” 这里的问题显然是我的最后一次转换。该字符串包含关键字符,表示PHYUD中特定日期的一部分。所以我的问题是如何让我的用户灵活地按照他们的意愿格式化输出,然后正确转换?
AGP
答案 0 :(得分:0)
我想用上述对象替换令牌,但也包括日期和时间的一些灵活性。我通过执行以下操作解决了这个问题:
'first replace the tokens by escaping the % character and number so that the
'date/time formatting ignores it
sOut = txtFormatPattern.Text
sOut = sOut.Replace("%1", "\%\1")
sOut = sOut.Replace("%2", "\%\2")
sOut = sOut.Replace("%3", "\%\3")
sOut = sOut.Replace("%4", "\%\4")
'now apply the date/time formatting as set by the user. the end result strips out
'the escape characters and ignores them for date/time formatting
sOut = myDate.ToString(sOut) 'date is July 01, 2007
'we should now have applied the date/time formatting and still have the original
'tokens so just replace
sOut = sOut.Replace("%1", "1000P")
sOut = sOut.Replace("%2", "PTTTT")
sOut = sOut.Replace("%3", "PHYUD")
sOut = sOut.Replace("%4", "YYYY123")
使用此例程,用户可以将格式字符串设置为“yyyyMMdd-%1-%2-%3-%4”,结果输出为“20070701-#1000P-PTTTT-PHYUD-YYYY123”
这应该适用于用户可以在选项中设置的日期/时间格式的任何变体,因为有效标记始终用%n表示。
AGP
答案 1 :(得分:0)
您可以使用String.Format
做您想做的事。花括号内的每个部分都是传递给函数的参数的占位符。
或者,您可以将冒号放在另一个特定于参数的格式化字符串中。
sOut = String.Format("{0:yyyyMMdd} {1} {2} {3} {4}", myDate, "1000P", "PTTTT", "PHYUD", "YYYY123")