Foxtable(狐表)用户栏目专家坐堂 → 提取字符


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

主题:提取字符

美女呀,离线,留言给我吧!
ganlan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
提取字符  发帖心情 Post By:2021/9/7 9:37:00 [只看该作者]

If e.DataCol.Name = "子订单编号" AndAlso e.DataRow.isnull("选购商品") = False Then 
Dim gg() As String = e.DataRow("选购商品").split("【")
If gg.length > 1 Then e.DataRow("商品规格") = "【" & gg(1)
Else
If e.DataRow.isnull("商品规格") = true Then
e.DataRow.isnull("商品规格") =e.DataRow("选购商品")
End If
End If

想处理的结果是能找到“”的就取后面部分,找不到就填入e.DataRow("选购商品")
我用了上面的代码,结果是不管找没找到都填了e.DataRow("选购商品")

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/7 9:42:00 [只看该作者]

点击代码编辑器的重排按钮,格式化一下代码,代码的逻辑层次就一目了然了

If e.DataCol.Name = "选购商品" AndAlso e.DataRow.isnull("选购商品") = False Then
    Dim gg() As String = e.DataRow("选购商品").split("【")
    If gg.length > 1 Then
        e.DataRow("商品规格") = "【" & gg(1)
    Else
        e.DataRow("商品规格") = e.DataRow("选购商品")
    End If
End If

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2021/9/7 9:53:00 [只看该作者]

我之前加了end if提示出错,
If e.DataCol.Name = "子订单编号" AndAlso e.DataRow.isnull("选购商品") = False Then 
Dim gg() As String = e.DataRow("选购商品").split("【")
If gg.length > 1 Then e.DataRow("商品规格") = "【" & gg(1)
End If

这里两个IF,但是用了一个End If就可以,一直没搞懂什么原因

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/7 10:00:00 [只看该作者]

如果if里面只有一行代码,vb的语法支持一行显示,但是必须得有then关键字,这时可以省略end if,但是这一行代码和if必须放到同一行里

If 某某条件 Then 某一行代码

如果if里面有多行代码,就必须使用endif了,如

If 某某条件 Then
    某一行代码1
    某一行代码2
end if

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2021/9/7 10:25:00 [只看该作者]

谢谢

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2022/1/31 10:03:00 [只看该作者]

版主,除夕快乐!请教个问题
如果内容是:商品名*1
想用split("*")提取*前面的商品名好像提取不到,是不是因为*是特殊字符,不管用

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2022/1/31 10:16:00 [只看该作者]

我弄错了,可以的,没事了

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2022/2/8 17:06:00 [只看该作者]

版主,开工大吉图片点击可在新窗口打开查看
请教个问题,用split怎么可以从右往左开始查找,现在是从左往右,如果这个字符出现多次会以第一个就做为分隔了,怎么可以以最后一个做为分隔呢

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/8 17:18:00 [只看该作者]

方法1、改为使用LastIndexOf,配合SubString

我们可以用Step语句将步长设为负值,这样可以倒序来执行,例如:

For i As Integer = 100 To 1 Step -1
    Output.Show(i)

Next

在命令窗口执行下面的代码,会得到:

100
99
98
97
...
3
2
1


 回到顶部