以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 区分单元格的字符类型 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=41580) |
||||
-- 作者:realredred -- 发布时间:2013/10/22 22:55:00 -- 区分单元格的字符类型 单元格中的字符是这样 想做到的效果是 当输入 型号时,能把英文字 及 数字分开,分別存放到其他列的单元格
如: 型号列是 EP00258 拆分到 客户列 = E 类別列 = P 编号列 = 00258
STR00451 则是 客户列 = ST 类別列 = R 编号列 = 00451
00369SN 则是 客户列 = S 类別列 = N 编号列 = 00369
客户代码的位数不定,现在是由1位~3位 类別位数固定,1位 编号位数不定 有点晕
![]() ![]() |
||||
-- 作者:有点甜 -- 发布时间:2013/10/22 22:59:00 -- 规则是不是 类别是字母的最后一位? |
||||
-- 作者:realredred -- 发布时间:2013/10/22 22:59:00 -- 是的
|
||||
-- 作者:有点甜 -- 发布时间:2013/10/22 23:20:00 -- 用正则,参考下面的代码 For Each dr As DataRow In DataTables("表A").Select("型号 is not null") Dim data As String = dr("型号") Dim reg As new System.Text.RegularExpressions.Regex("([0-9]+)([a-zA-Z]+)") Dim mc As object = reg.Matches(data) If mc.count = 1 Then dr("编号") = mc(0).groups(1).value Dim code As String = mc(0).groups(2).value dr("客户") = code.Substring(0, code.length-1) dr("类別") = code.Substring(code.length-1) Else reg = new System.Text.RegularExpressions.Regex("([a-zA-Z]+)([0-9]+)") mc = reg.Matches(data) If mc.count = 1 Then dr("编号") = mc(0).groups(2).value Dim code As String = mc(0).groups(1).value dr("客户") = code.Substring(0, code.length-1) dr("类別") = code.Substring(code.length-1) End If End If Next |
||||
-- 作者:lsy -- 发布时间:2013/10/23 8:27:00 -- 正则不好理解,还是按常规:
[此贴子已经被作者于2013-10-23 10:23:00编辑过]
|
||||
-- 作者:realredred -- 发布时间:2013/10/24 1:02:00 -- ISY老師的代码精简 也感谢小甜甜的正则表达式 先用了ISY老師的 我也正研究理解正则表达式的用法
如果类別的位数是1~2位 那情況能夠达到目的嗎? [此贴子已经被作者于2013-10-24 1:05:43编辑过]
|