Vb.net 在Mid函数中使用IndexOf

Vb.net 在Mid函数中使用IndexOf,vb.net,string,Vb.net,String,对于大多数人来说,这可能是一个简单的解决方案,但根据语法,我无法让它正常工作 我有这行文字“零件号123456价格$50.00” 我想从中提取零件号,所以我使用这个函数 str = Mid(str, str.IndexOf("Part Number") + 12, str.IndexOf("Price")) 每次我的结果都是str=“123456Price$50.0”。我知道零件号的长度可能不同,所以我需要一个解决方案来解决这个问题。Visual Basic的Mid()函数有三个参数:(1)字

对于大多数人来说,这可能是一个简单的解决方案,但根据语法,我无法让它正常工作

我有这行文字“零件号123456价格$50.00”

我想从中提取零件号,所以我使用这个函数

str = Mid(str, str.IndexOf("Part Number") + 12, str.IndexOf("Price"))
每次我的结果都是str=“123456Price$50.0”。我知道零件号的长度可能不同,所以我需要一个解决方案来解决这个问题。

Visual Basic的
Mid()
函数有三个参数:(1)字符串,(2)字符串中的起始位置,以及(3)要复制的字符数

因此,如果您的字符串是“零件号123456价格$50.00”,并且您希望使用
Mid()
函数将零件号作为一系列数字提取,字符串的“123456”部分,那么您需要找到零件号数字字符串的开头,然后知道数字的数量

如果字符串位于变量
str
中,则可以通过类似
str.IndexOf(“Number”)+len(“Number”)
的方式找到偏移量,该偏移量将在字符串“Number”之后提供到的偏移量

接下来,您需要找到位数,以便执行类似于
str.IndexOf(“Price”)
的操作,找到文本“Price”开始的位置,然后从该偏移量中减去数字开始的偏移量

所有这些的结果是,您需要一些代码,如下面所示。我还没有测试这个源代码,因为我不是一个VB程序员,所以它可能需要一个调整,您可能还想对数据的有效性进行一些检查

Dim TextNumber as String = "Number"
Dim TextPrice as String = "Price"

iOffset = str.IndexOf(TextNumber) + len(TextNumber)
str = Mid(str, iOffset, str.IndexOf(TextPrice) - iOffset)
Visual Basic的
Mid()
函数有三个参数:(1)字符串,(2)字符串中的起始位置,以及(3)要复制的字符数

因此,如果您的字符串是“零件号123456价格$50.00”,并且您希望使用
Mid()
函数将零件号作为一系列数字提取,字符串的“123456”部分,那么您需要找到零件号数字字符串的开头,然后知道数字的数量

如果字符串位于变量
str
中,则可以通过类似
str.IndexOf(“Number”)+len(“Number”)
的方式找到偏移量,该偏移量将在字符串“Number”之后提供到的偏移量

接下来,您需要找到位数,以便执行类似于
str.IndexOf(“Price”)
的操作,找到文本“Price”开始的位置,然后从该偏移量中减去数字开始的偏移量

所有这些的结果是,您需要一些代码,如下面所示。我还没有测试这个源代码,因为我不是一个VB程序员,所以它可能需要一个调整,您可能还想对数据的有效性进行一些检查

Dim TextNumber as String = "Number"
Dim TextPrice as String = "Price"

iOffset = str.IndexOf(TextNumber) + len(TextNumber)
str = Mid(str, iOffset, str.IndexOf(TextPrice) - iOffset)

将传统的VB字符串方法(如Mid)与.Net字符串方法(如IndexOf)混合使用可能会造成混淆。VB方法使用1作为第一个字符的索引,而.Net方法使用0

以下代码将从字符串中提取零件号

Dim str As String = "Part Number123456Price$50.00"
Dim iPart As Integer = str.IndexOf("Part Number") + 11
Dim iPrice As Integer = str.IndexOf("Price")
str = str.Substring(iPart, iPrice - iPart).Trim

将传统的VB字符串方法(如Mid)与.Net字符串方法(如IndexOf)混合使用可能会造成混淆。VB方法使用1作为第一个字符的索引,而.Net方法使用0

以下代码将从字符串中提取零件号

Dim str As String = "Part Number123456Price$50.00"
Dim iPart As Integer = str.IndexOf("Part Number") + 11
Dim iPrice As Integer = str.IndexOf("Price")
str = str.Substring(iPart, iPrice - iPart).Trim

或者,如果价格始终为$00.00格式,也可以这样做

Dim str as String=“零件号123456价格$50.00”

str=str.Remove(str.IndexOf(“Price”))

或者,如果Price始终是$00.00格式,也可以这样做

Dim str as String=“零件号123456价格$50.00”

str=str.Remove(str.IndexOf(“Price”))

Mid()的第二个参数是字符数,不是吗?所以你需要计算数字字符串的长度,而不是价格的偏移量;str=Mid(str,i,str.IndexOf(“价格”)-i);如果您想要一个短的单行程序,那么
str.Split({“P”c,“r”c})(3)
将返回
123456
Mid的第二个参数()是字符数,不是吗?所以你需要计算数字字符串的长度,而不是价格的偏移量;str=Mid(str,i,str.IndexOf(“价格”)-i);如果您想要一个短的单行程序,那么
str.Split({“P”c,“r”c})(3)
将返回
123456