以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  再问contains中变量使用----解决问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=97596)

--  作者:sunnyfastener
--  发布时间:2017/3/15 13:10:00
--  再问contains中变量使用----解决问题

对contains(),中变量,不能识别,求助了

 

\'\'\'对输入标准进行标准化,体系+推荐+标准号+年号(如果有,在考虑中)
\'\'\'
Dim str As String = args(0)
Dim std() As String = {"GB","HG","SH","JB","ASME","ASTM","DIN"} \'\'\'标准体系数组
Dim std_spec() As String = {"","","",""}

 

For Each std_tp As String In std
    MessageBox.Show(std_tp)
    If str.Contains( std_tp ) Then   \'\'\'if str.contains("" & std_tp & "") then(也尝试了)
        std_spec(0) = std_tp
        str.Replace(""& std_tp &"","")
    Else
        std_spec(0) = "未匹配"
    End If
Next

Return std_spec(0) 

 

经高手指点,找到问题

1、是逻辑上出问题了,匹配到后,应该退出循环,添加exit for

2、contains 可以直接使用变量名


 

[此贴子已经被作者于2017/3/15 18:07:53编辑过]

--  作者:有点色
--  发布时间:2017/3/15 13:36:00
--  

是不是大小写的问题?

 

If str.ToLower.Contains( std_tp.ToLower ) Then


--  作者:sunnyfastener
--  发布时间:2017/3/15 17:58:00
--  

测试过了,都是同一状态

 


--  作者:有点色
--  发布时间:2017/3/15 18:33:00
--  

改一下

 

Dim str As String = ”123HG789"
Dim std() As String = {"GB","HG","SH","JB","ASME","ASTM","DIN"} \'\'\'标准体系数组
Dim std_spec() As String = {"","","",""}

For Each std_tp As String In std
    If str.Contains( std_tp ) Then
        std_spec(0) = std_tp
        str = str.Replace(std_tp,"")
        exit for
    Else
        std_spec(0) = "未匹配"
    End If
Next

msgbox(std_spec(0) & vbcrlf & str)