以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]诡异的问题求解  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=27747)

--  作者:gedogn
--  发布时间:2013/1/9 10:47:00
--  [求助]诡异的问题求解
想将字符串a的内容通过string.replace方法变成字符串b,结果失败。测试后发现诡异现象。求助。
附件中是代码,全部复制到命令窗口执行即可。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试代码.txt

期望值是“不同”,而实际值是“相同”。求解。

图片点击可在新窗口打开查看此主题相关图片如下:截图1
图片点击可在新窗口打开查看

下面截图2是在基本相同的代码在其他vb编译系统(sharpDevelop 3.5)下的代码及其执行结果。

图片点击可在新窗口打开查看此主题相关图片如下:截图2
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-1-9 10:53:11编辑过]

--  作者:lin_hailun
--  发布时间:2013/1/9 11:04:00
--  
 全角与半角的区别。实际他们是相同的。

 不能替换的代码是怎样的?贴出来,你可以先转成半角,再替换。

--  作者:gedogn
--  发布时间:2013/1/9 12:43:00
--  
 就是把a替换成b。
b=a.replace(" "," ")

不能使用全角半角转化,因为a中的全角字符除了空格外,其它标点符号的要求原样。
[此贴子已经被作者于2013-1-9 12:46:42编辑过]

--  作者:lin_hailun
--  发布时间:2013/1/9 13:06:00
--  
 我测试可以替换的。有什么疑问?

\'\'\'
Dim a As String ="中间是个 空格"
Dim b As String ="中间是个 空格"

b=a.replace(" ","abc")
output.show(a=b)
[此贴子已经被作者于2013-1-9 13:06:37编辑过]

--  作者:gedogn
--  发布时间:2013/1/9 15:50:00
--  
楼上的是对的,但是没有意义。
我将编译的代码反汇编了一下,发现问题了。
\'\'\'
Dim a As String ="中间是个 空格"  \'其中a="中间是个 空格"=b
Dim b As String ="中间是个 空格"

b=a.replace(" ","abc")
output.show(a=b)
也就是说foxtable编译时,汇编字符串中的全角空格直接替换为半角字符。结果就导致想把数据库中的一个字段中的全角空格时替换失败。