最近做项目的时候遇到这样一个问题,现在的粮仓只有粮种类型,简单的说一种是长方体,另一种就是圆柱体.但用户要求把原平台上所有的仓房类型都加到系统中(看上去很专业).想想怎样去合理的切割,既可以显示出来,又可以不影响性能. 观察了一下这些仓的类型发现可以把涉及到的“圆”、“筒”、“洞”都归结为浅原仓,其余都为房式仓。
一、问题
如何将datagridview中含有这些字的词识别,执行不同的操作。
二、解决方案
1、想到从datagridview中模糊查询
2、使用正则表达式进行查询
前两种方法,都可以实现,只不过我们用的比较少,会在后期博客中做介绍。现在主要介绍VB自带的Instr函数。
三、Instr函数
VB:InStr(n,String1,String2)
1、定义:返回要截取的字符串在源字符串中的位置。
2、功能:是从字符串String1的第n个字符开始搜索字符串String2第一次出现的位置,省略n时,则从Sring1的开头开始搜索。当字符串String1中包含String2时,返回值是从String1的第一个字符算起出现字符串String2的字符位置。如果String1中不包含String2,返回值则为0.
3、实例:
<span style="font-size:18px;">DimString1 As String = "abcde" '定义String1为源字符串 Dim Search2As String = "a" '定义String2为需要检索的字符串 Dim n As Integer '定义位置 TestPos= InStr(1,"W") ' Returns 0,字符串中不存在w</span>
4、项目实例:
Dim strStorage AsString ’定义仓房类型 Dim strIncludeCircleAs String ’定义包含“圆”的仓房类型 Dim strIncludeTube AsString ’定义包含“筒”的仓房类型 Dim strIncludeHole AsString ’定义包含“洞”的仓房类型 '如果仓房类型中含有“圆”、“洞”、“筒”的都视为浅圆仓,其余都为房式仓 strStorage =FrmHouseTool.dgvStorageInfo.CurrentRow.Cells("仓房类型").Value.ToString strIncludeCircle ="圆" strIncludeTube ="筒" strIncludeHole ="洞" '根据不同的仓房类型,显示不同的设置 If InStr(1,strStorage,strIncludeHole) > 0 Or InStr(1,strIncludeCircle) > 0 OrInStr(1,strIncludeTube) > 0Then gbRect.Enabled= False '长方体仓为不可用 Exit Sub Else gbRect.Enabled = true '长方体可用 Exit Sub End If问题很容易用Instr解决了,现在想想为什么一开始没有想到呢?虽然在找的过程中也接触到了很多新的东西,但 很值得思考一下,为什么没有想到以前的学到的知识。简单的VB就可以解决的,现在想想,真的了解VB吗?加油吧!