以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]替换数字中的错误小数点  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=117148)

--  作者:天一生水
--  发布时间:2018/4/7 21:01:00
--  [求助]替换数字中的错误小数点
怎样替换数值中错误的小数点,有的是句号"。"、有的是全角"."。
比如:29844。9406%;  2.556 ;
但要保留中文字符中的句号。

Dim str As String = "你好。29844。9406%"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "    ")
msgbox(mc.count)

结果为:"你好。29844.9406%"

--  作者:wyz20130512
--  发布时间:2018/4/7 22:29:00
--  
Dim str As String = "你好。29844。9406% Foxtable。44。97"
For i As Integer = 1 to str.length - 1
    If str.Chars(i) = "。" And IsNumeric(str.Chars(i-1)) Then
        msgbox("找到了!是第" & i+1 & "个字符" )
        str = str.remove(i,1).insert(i,".")
    End If
Next
Output.Show(str)

你好。29844.9406% Foxtable。44.97
[此贴子已经被作者于2018/4/7 22:35:50编辑过]

--  作者:天一生水
--  发布时间:2018/4/7 22:40:00
--  
谢谢朋友!
好几个点看不懂,向高手学习!

--  作者:有点甜
--  发布时间:2018/4/8 8:59:00
--  
\'\'\'
Dim str As String = "你好。29844。9406% Foxtable。44。97"
str = System.Text.RegularExpressions.Regex.replace(str, "(?<=[0-9])。(?=[0-9])", ".")
msgbox(str)

--  作者:天一生水
--  发布时间:2018/4/8 9:34:00
--  
谢谢老师!
如果同时再替换全角".",是不是这样?
\'\'\'
Dim str As String = "你好。29844。9406% Foxtable。44。97"
str = System.Text.RegularExpressions.Regex.replace(str, "(?<=[0-9])。(?=[0-9])", ".").replace(str, "(?<=[0-9])(?=[0-9])", ".")
msgbox(str)
--  作者:有点甜
--  发布时间:2018/4/8 10:42:00
--  
\'\'\'
Dim str As String = "你好。29844。9406% Foxtable。44。。.97"
str = System.Text.RegularExpressions.Regex.replace(str, "(?<=[0-9])[。.]+(?=[0-9])", ".")
msgbox(str)