Foxtable(狐表)用户栏目专家坐堂 → 数字+英文的 款号自动分析[已解決]


  共有4280人关注过本帖树形打印复制链接

主题:数字+英文的 款号自动分析[已解決]

帅哥哟,离线,有人找我吗?
realredred
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
数字+英文的 款号自动分析[已解決]  发帖心情 Post By:2013/10/17 14:38:00 [显示全部帖子]

分別有款号列及客户列
款号的字节不规定
如:
08476R,MAR480,00039ER,00076EN,00940SE,08835E,GJP123等等

款号只有最后两位数是英文字並以E为首的话,客户=EXP
款号只有最后两位数是英文字並以S为首的话,客户=STR
款号只有最后一位数是英文字,或只有最前的3位数是英文字的话,客户=ATM

想爆脑子都搞不定
寻求指引

[此贴子已经被作者于2013-10-17 22:58:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
realredred
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By:2013/10/17 15:55:00 [显示全部帖子]

因为款号每次都不同
不用遍历可以嗎?
改用e.DATAROW
应该可以吧

 回到顶部
帅哥哟,离线,有人找我吗?
realredred
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By:2013/10/17 16:03:00 [显示全部帖子]

小甜甜的 好像比较容易了解

 

If e.DataCol.Name = "款号"
    Dim dr1 As DataRow = e.DataRow
    Dim s As String = dr1("款号")
   
    If RegularExpressions.Regex.IsMatch(s,"\w\d[eE]{1}[a-zA-Z]{1}$") Then
        MessageBox.show("客户=EXP")
        dr1("客户") = "EXP"
    End If
    If RegularExpressions.Regex.IsMatch(s,"\w\d[sS]{1}[a-zA-Z]{1}$") Then
        MessageBox.show("客户=STR")
        dr1("客户") = "STR"
    End If
    If RegularExpressions.Regex.IsMatch(s,"\d[a-zA-Z]{1}$") OrElse RegularExpressions.Regex.IsMatch(s,"^[a-zA-Z]{3}\d") Then
        MessageBox.show("客户=ATM")
        dr1("客户") = "ATM"
    End If
   
End If


 回到顶部
帅哥哟,离线,有人找我吗?
realredred
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By:2013/10/17 16:04:00 [显示全部帖子]

感谢狐爸和小甜甜指导

 

我再研究一下狐爸的方法

现在仍未看懂.


 回到顶部
帅哥哟,离线,有人找我吗?
realredred
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By:2013/10/17 22:58:00 [显示全部帖子]

以下是引用狐狸爸爸在2013-10-17 16:21:00的发言:

呵呵,估计这样你就理解了:

 

Dim nm As String = "08476R"
Dim v As String = nm.SubString(nm.Length -2)
If Char.IsLetter(v.Chars(0)) AndAlso Char.IsLetter(v.Chars(1)) Then
    If v.Chars(0) = "e" Then
        output.show(nm & ":exp")
    ElseIf v.Chars(0) = "s" Then
        output.show(nm & "str")
    End If
ElseIf Char.IsDigit(v.Chars(0)) AndAlso Char.IsLetter(v.Chars(1))  Then
    output.show(nm & ":atm")
ElseIf Char.IsLetter(nm.Chars(0)) AndAlso Char.IsLetter(nm.Chars(1)) AndAlso  Char.IsLetter(nm.Chars(2))  Then
    output.show(nm & ":atm")
End If

 

我原来那样写,只是为了让你一次可以验证各种情况,结果适得其反。

这样浅白些,明解了,两个情況都能达到结果.

有老師指引就是好,自己脑根不灵光..

还有就是认错了BIN 成了小甜甜

上班看网页不能太夠所以用了瞬眼.

看錯了

还是感谢BIN老師和狐爸.


 回到顶部