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


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

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

帅哥哟,离线,有人找我吗?
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编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/17 15:13:00 [只看该作者]

Dim s As String = "00039ER"
If RegularExpressions.Regex.IsMatch(s,"\w\d[eE]{1}[a-zA-Z]{1}$") Then
    MessageBox.show("客户=EXP")
End If
If RegularExpressions.Regex.IsMatch(s,"\w\d[sS]{1}[a-zA-Z]{1}$") Then
    MessageBox.show("客户=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")
End If

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/17 15:20:00 [只看该作者]

呵呵,我再来个不用正则表达式的:

 

Dim nms() As String = {"08476R","MAR480","00039ER","00076EN","00940SE","08835E","GJP123"}
For Each nm As String In nms
    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
Next


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


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

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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/10/17 15:59:00 [只看该作者]

当然你可以,这里告诉你的是判断的方法,有了方法,你怎么写都行。


 回到顶部
帅哥哟,离线,有人找我吗?
realredred
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

感谢狐爸和小甜甜指导

 

我再研究一下狐爸的方法

现在仍未看懂.


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
东坡一剑
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:366 积分:2478 威望:0 精华:0 注册:2013/1/13 23:43:00
  发帖心情 Post By:2013/10/17 16:51:00 [只看该作者]

Bin:你这些代码好陌生,从哪里可以学?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/10/17 16:55:00 [只看该作者]

以下是引用东坡一剑在2013-10-17 16:51:00的发言:
Bin:你这些代码好陌生,从哪里可以学?

百度 正则表达式

 回到顶部
总数 11 1 2 下一页