以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  提取后10位字符  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128022)

--  作者:yangwenghd
--  发布时间:2018/11/27 11:13:00
--  提取后10位字符
能帮忙看看这个吗?
就是提取列后面10位为文字的字符 
现在就是还能会把“】”符号提取出来,能帮忙改一下吗?就是改为只提取文字字符,其他都不要 什么逗号,括号 空格,都跳过。


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20181127111212.jpg
图片点击可在新窗口打开查看

If e.DataCol.Name = "文件夹编号转换_商品名称" Then
    Dim Oldstr As String =e.DataRow("文件夹编号转换_商品名称")
    Dim Newstr As String = ""
    For i As Integer = Oldstr.Length - 1 To 0 Step - 1
        If Asc(Oldstr.Chars(i)) < 0  AndAlso Newstr.Length < 10 Then
            Newstr = Oldstr(i) & Newstr
        End If
    Next
    Newstr = "" & NewStr &  ""
    \'e.DataRow("第六列")
    e.DataRow("文件夹编号转换_后10位字符")="" & Newstr & ""
End If

[此贴子已经被作者于2018/11/27 11:15:11编辑过]

--  作者:有点甜
--  发布时间:2018/11/27 12:17:00
--  
If e.DataCol.Name = "文件夹编号转换_商品名称" Then
    Dim Oldstr As String =e.DataRow("文件夹编号转换_商品名称")
    Dim Newstr As String = ""
    For i As Integer = Oldstr.Length - 1 To 0 Step - 1
        If Asc(StrToNarrow(Oldstr.Chars(i))) < 0  AndAlso Oldstr.Chars(i) <> "" AndAlso Newstr.Length < 10 Then
            Newstr = Oldstr(i) & Newstr
        End If
    Next
    Newstr = "" & NewStr &  ""
    \'e.DataRow("第六列")
    e.DataRow("文件夹编号转换_后10位字符")="" & Newstr & ""
End If

--  作者:yangwenghd
--  发布时间:2023/2/6 11:18:00
--  
老师 可以这样判断吗?
判断 文件夹编号转换_商品名称这一列的第一个非字符,然后在把非字符的这边放到第二列,右边的字符放到第三列。

比如:  螺丝M30*5  然后螺丝(文字部分)放到第二列,M30*5(这里也有可能是φ等符号),放到第三列。
感谢 感谢 

--  作者:有点蓝
--  发布时间:2023/2/6 11:29:00
--  
Dim pattern As String = "[\\u4e00-\\u9fa5]"
Dim txt As String = "螺丝M30*5"
Dim str = System.Text.RegularExpressions.Regex.Replace(txt , pattern , "")
Output.Show(str)
Dim 中文 As String = txt.Replace(str, "")
Output.Show(中文)

--  作者:yangwenghd
--  发布时间:2023/2/6 12:13:00
--  
老师 可以是先判断 这边的第一个文字吗?然后在执行文字的左边分一列,文字的右边分一列。不管右边还要文字没有,都放到右边,就以第一个字符为分界线。感谢 感谢 

图片点击可在新窗口打开查看此主题相关图片如下:1675656704402.png
图片点击可在新窗口打开查看

Dim pattern As String = "[\\u4e00-\\u9fa5]"
Dim txt As String = e.DataRow("文件夹编号转换_商品名称")
Dim str = System.Text.RegularExpressions.Regex.Replace(txt , pattern , "")
e.DataRow("英文") = System.Text.RegularExpressions.Regex.Replace(txt , pattern , "")
e.DataRow("中文") = txt.Replace(str, "")
[此贴子已经被作者于2023/2/6 12:15:19编辑过]

--  作者:有点蓝
--  发布时间:2023/2/6 13:32:00
--  
 第一个字符指什么?第一个非中文字符?
--  作者:yangwenghd
--  发布时间:2023/2/6 13:36:00
--  
对对对,我说错了 ,是一个非中文字符为接线,然后这个非中文字符的前面放一列,非中文字符和后面的非中文字符放一列。感谢老师
--  作者:有点蓝
--  发布时间:2023/2/6 13:51:00
--  
Dim pattern As String = "[^\\u4e00-\\u9fa5]"
Dim txt As String = "发顺丰螺丝911发光飞碟跟M30*5"
Dim r As New System.Text.RegularExpressions.Regex(pattern)
Dim str() As String = r.Split(txt)
Dim 中文 As String = str(0)
Output.Show(中文)
Dim a As String = txt.Substring(中文.Length)
pattern = "[\\u4e00-\\u9fa5]"
a = System.Text.RegularExpressions.Regex.Replace(a , pattern , "")
Output.Show(a)

--  作者:yangwenghd
--  发布时间:2023/2/6 14:11:00
--  
谢谢老师 ,可以把右边的中文也显示出来吗 ?
就是比如 Dim txt As String = "发顺丰螺丝911发光飞碟跟M30*5"   
中文显示:发顺丰螺丝

英文显示:911发光飞碟跟M30*5"    就是找出一个分界线(这个分界线以第一个非字符的前面为分界线) 分隔成两段,其他的什么都不用变,感谢老师 再麻烦麻烦你 感谢  
[此贴子已经被作者于2023/2/6 14:15:54编辑过]

--  作者:有点蓝
--  发布时间:2023/2/6 14:17:00
--  
去掉选下面代码
pattern = "[\\u4e00-\\u9fa5]"
a = System.Text.RegularExpressions.Regex.Replace(a , pattern , "")