以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助,分割完后的字符如何定位取值?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=39104)

--  作者:晕了快扶我
--  发布时间:2013/8/15 16:12:00
--  求助,分割完后的字符如何定位取值?

一数据列中固定输入格式如下 ,数据格式为String

送扳手1个+螺丝刀2把|A*1+B*2   \'A表示扳手的物料编码,B表示螺丝刀的物料编码

把这个字窜分割成

A

1

B

2

后,我需要用SQL语句调用物料编码取得各个物料的成本单价,代码如下

Dim Str1 As String = "送扳手1个+螺丝刀2把|A*1+B*2"
Dim V As Integer= Str1.IndexOf("|")
Dim str2 As String =str1.Remove(0,v+1)
Dim ss() As String = str2.Split("+")
For Each s1 As String In ss
    Dim s2() As String  = s1.Split("*")
    For Each s3 As String In s2
        \'output.show(s3)
        Dim cmd As New SQLCommand
        cmd.C
        cmd.CommandText = "select 合计成本 from {产品资料主表} where 物料编码 = \'" & 这里是一个分割出来的字符,也就是A & "\'"
     Dim vv As Decimal = cmd.ExecuteScalar
e.DataRow("赠品价格") = VV* ..(这里是分割出来的第二个字符就是数量)  
    Next
Next

 

求助,标红的地方该怎么写呢?



--  作者:Bin
--  发布时间:2013/8/15 16:20:00
--  
output.show(s3) 如果是你想要的值 直接拼接  S3 即可啊



--  作者:晕了快扶我
--  发布时间:2013/8/15 16:21:00
--  
以下是引用Bin在2013-8-15 16:20:00的发言:
output.show(s3) 如果是你想要的值 直接拼接  S3 即可啊


关键是 S3我分割成了2个字符,要分别取值啊,第一个值是用在SQL里的,另一个值是数量,用来计算价格的


--  作者:Bin
--  发布时间:2013/8/15 16:23:00
--  
s2(0)  s2(1) 即可 没有必要循环它



--  作者:晕了快扶我
--  发布时间:2013/8/15 16:24:00
--  
以下是引用Bin在2013-8-15 16:23:00的发言:
s2(0)  s2(1) 即可 没有必要循环它


...原来字符后面可以跟数字表示位置的啊,我试试


--  作者:lsy
--  发布时间:2013/8/15 16:32:00
--  
Dim s As String = "送扳手1个+螺丝刀2把|A*1+B*2"
Dim s1 As String = s.Split("|")(1).Split("+")(0).split("*")(0) \'扳手编号
Dim s2 As String = s.Split("|")(1).Split("+")(1).split("*")(0) \'螺丝刀编号
Dim s3 As String = s.Split("|")(1).Split("+")(0).split("*")(1) \'扳手数量
Dim s4 As String = s.Split("|")(1).Split("+")(1).split("*")(1) \'螺丝刀数量
Output.Show(s1 & s2 & s3 & s4)

--  作者:晕了快扶我
--  发布时间:2013/8/15 16:40:00
--  
以下是引用lsy在2013-8-15 16:32:00的发言:
Dim s As String = "送扳手1个+螺丝刀2把|A*1+B*2"
Dim s1 As String = s.Split("|")(1).Split("+")(0).split("*")(0) \'扳手编号
Dim s2 As String = s.Split("|")(1).Split("+")(1).split("*")(0) \'螺丝刀编号
Dim s3 As String = s.Split("|")(1).Split("+")(0).split("*")(1) \'扳手数量
Dim s4 As String = s.Split("|")(1).Split("+")(1).split("*")(1) \'螺丝刀数量
Output.Show(s1 & s2 & s3 & s4)

这方法灵活性不高啊,因为有可能还有C*3,D*4


--  作者:lsy
--  发布时间:2013/8/15 16:47:00
--  

不是代码灵活性不高,是楼主的灵活性不高啊。

Dim s As String = "送扳手1个+螺丝刀2把|A*1+B*2"
只是楼主提供的一个例子,这个字符串从何而来,只有你一个人知道,而且可以是变量。

 

变量灵活性高不高?


--  作者:晕了快扶我
--  发布时间:2013/8/15 16:50:00
--  
以下是引用lsy在2013-8-15 16:47:00的发言:

不是代码灵活性不高,是楼主的灵活性不高啊。

Dim s As String = "送扳手1个+螺丝刀2把|A*1+B*2"
只是楼主提供的一个例子,这个字符串从何而来,只有你一个人知道,而且可以是变量。

 

变量灵活性高不高?

这个没办法,这个程序是给统计淘宝的出库单的,所有的赠品都在备注里写的,淘宝的出库单格式是固定的,我没办法动,只能采取这种变通的方法,让操作员用固定的备注格式,我通过分割字符来取值


--  作者:晕了快扶我
--  发布时间:2013/8/15 16:53:00
--  

单个赠品的价格算出来了,全部累加该如何写呢?状态不好,脑子混乱啊

Dim Str1 As String = "送扳手1个+螺丝刀2把|A*1+B*2"
Dim V As Integer= Str1.IndexOf("|")
Dim str2 As String =str1.Remove(0,v+1)
Dim ss() As String = str2.Split("+")
For Each s1 As String In ss
    Dim s2() As String  = s1.Split("*")
    Dim cmd As New SQLCommand
    cmd.C
    cmd.CommandText = "select 合计成本 from {产品资料主表} where 存货编码 = \'" & S2(0) & "\'"
    Dim vv As Decimal = cmd.ExecuteScalar
    Dim sl As Integer = Format(s2(1))
    Dim jg As Decimal = vv*sl ‘这个是每个赠品的价格,如何把所有赠品的价格都计算出来呢?就是赠品1+赠品2+赠品3+...
Next