今天在用VS.Net 2003的Macro
IDE写一个自动生成代码的宏的时候,意外发现VB中的转义字符和C风格的转义字符是不一样的.惭愧惭愧,因为以前没有这方面的应用,所以根本没注意到.
以下为出错代码片断:
Private
PropertyString
As
String
= _
"public {1} {0}" + newline + _
"\{" + newline + _
" get" + newline + _
" \{" + newline + _
" return
{2};" + newline + _
" \}" + newline + _
" set" + newline + _
" \{" + newline + _
" if(
value == {2} )" + newline + _
" \{"
+ newline + _
"
return;" + newline + _
" \}"
+ newline + _
" {2}
= value;" + newline + _
" \}" + newline + _
"\}" + newline
上述代码片断所完成的功能是根据获得的属性名称,属性类型和字段名称自动生成C#的公共属性代码.
事情就这样发生了,按F5运行,弹出错误窗口说使用了错误的格式,我当时脑子没转过弯来,到底是错在哪乐?
仔细看一下,一行行注释来运行,结果发现是\{的问题,我郁闷乐,难道转义字符不是这么写么?打开帮助的搜索窗口,查{,弹出一个错误窗口报告未能完成操作,查\{,报告未能完成操作,查"\{"还是未能完成操作,看着触目惊心的大红叉,我再查"输出
花括号", "输出 大括号",无结果.
上Google,看到有篇帖子说ASP里的转义字符和C是不同的,那到底是什么呢?我更郁闷乐,在长久的郁闷之后,我忽然想起T-SQL语句里面对中括号[]的转义处理,是把[用[[]表示,VB里莫非也是类似的处理?
经过我的尝试(完完全全是猜出来的,惭愧啊,VB的东西差不多忘光乐),发现在VB风格的语言(即VB,VBS,VBA,ASP,VB.Net之类)中进行的字符串输出时的一部分转义字符替换规则是:
1. 使用{{ 输出 {
2. 使用}} 输出 }
3. 使用"" 输出 "
4. ',~,$,%,^,\等传统C语法的需要转义的字符都可以直接输出
呵呵,这几条规则只是我在Macro里面得到验证通过的,并没有真的去试验是不是所有VB风格的语言里都是这样,假如有朋友碰巧也为这个问题伤脑筋,那他可以看看这里扩展一下思路,不过要是有朋友完全照我说的去做出问题乐来找我,我...闪...先
:P