在代码中的双引号有两种作用,
一种是表示数据为字符串内容,
另一种是代表双引号符号本身.
接下来我们将通过代码与讲解来演示这两种情况的区别
情况1: 表示数据为字符串内容,
- Dim 颜色
- 颜色 = "FFFFFF"
- /*
- 如果你认为颜色的内容是 "FFFFFF", 那你就犯了上面的错误了.
- 这里颜色的内容是指 FFFFFF, 这里的双引号仅仅是为了表示字符串内容
- */
复制代码我们代码中的字符串用到双引号目的是为了表示这个变量内容是哪些, 而不是内容包含双引号, 如果无法理解, 请看下面这句话:
乔峰长叹一声,说道:"各位均已脱险,乔峰就此别过。"请问上面这段内容乔峰说什么了? 应该是
各位均已脱险 乔峰就此别过 这句话吧? 不会有同学认为乔峰在说,
双引号 各位均已脱险,乔峰就此别过。双引号 内容吧?
也就是说, 在这里的双引号只是为了表示乔峰说了哪些话, 没有其他实际含义, 在代码里也是如此, 仅代表里面内容是字符串的意思, 没有其他实际意义.
情况2: 代表双引号符号本身.
乔峰长叹一声,说道:"各位均已脱险,乔峰就此别过。"现在目的改下, 我们想要把上面这段内容写到记事本上, 思路很简单, 电脑版按键用SayString()命令, 手机版按键用InputText()命令, 参数传入上面这段内容即可.
然后有同学就写了下面这段错误代码
- //电脑版错误代码如下
- SayString "乔峰长叹一声,说道:"各位均已脱险,乔峰就此别过。""
- //手机版错误代码如下
- InputText "乔峰长叹一声,说道:"各位均已脱险,乔峰就此别过。""
复制代码这部分代码错误地方在于, 英文双引号默认表示存放字符串内容的意思, 并非双引号符号自身, 所以这段参数在代码中理解就变成了这样子的:
"乔峰长叹一声,说道:" 各位均已脱险,乔峰就此别过。 ""也就是变成了
字符串内容 变量 字符串内容 , 而且中间还没有&符号连接, 那么当然就会报错了.
解决方法有很多种, 比如用转义符, 用ASCII, 用替换等方法.
首先推荐的是使用转义符, 最快速, 但是新人很难理解转义符, 至于ASCII, 也就是Chr(34)来表示一个双引号字符, 但是如果再加上&链接, 新人更难理解了.
所以这里我介绍一种万能替换解决方法, 按照这个模板去操作, 可以解决任何双引号字符问题.
首先, 我们做一个约定, 用
{双引号}来代替内容的双引号, 也就是把你要保存的内容里面所有双引号都用
{双引号}来代替.
乔峰长叹一声,说道:{双引号}各位均已脱险,乔峰就此别过。{双引号}接着使用Replace()命令进行替换, 例子如下:
- //自定义函数命令, 将文本内容中的 {双引号} 替换成 " 符号
- Function 替换双引号(文本内容)
- 替换双引号 = Replace(文本内容, "{双引号}", Chr(34))
- End Function
- //调用上面的函数, 第一个参数写文本内容
- //通过这种方法, 就可以得到文本内容为 乔峰长叹一声,说道:"各位均已脱险,乔峰就此别过。"
- Dim 文本
- 文本 = 替换双引号("乔峰长叹一声,说道:{双引号}各位均已脱险,乔峰就此别过。{双引号}")
- TracePrint 文本
- //以上输出结果是 乔峰长叹一声,说道:"各位均已脱险,乔峰就此别过。"
复制代码