我怎么知道“/”之前的第一个字符是什么? asp.net vb.net

时间:2015-10-15 06:55:35

标签: asp.net vb.net

我有一个这样的字符串:

Dim temp As String = "Batch 634239100A/45 pcs booked out by vladut moraru on 10/15/2015"

或者

Dim temp As String = "Batch 322.3/4 pcs booked out by vladut moraru on 10/15/2015"

或者

Dim temp As String = "Batch 322/3/4 pcs booked out by vladut moraru on 10/15/2015"

我想显示322/3/

Batch is : 322/3/
PCS is : 4

我想只显示所有字符串的<{1}}

我以为我会找到322/3/,然后在最后322/3/4之后将其拆分并在/之前找到值,但是如何?

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用RegularExpression,但这样做有一些限制,特别是当您还在字符串中包含日期时。

如果这些数字总是采用NNN/NNN/NN 的格式,那么它们会在之前任何日期出现,那么这将有效......

Dim regExMatch As System.Text.RegularExpressions.Match
regExMatch = System.Text.RegularExpressions.Regex.Match(myString, "(\d{3}/\d{3})/(\d{2})")
If regExMatch.Success Then
    Dim batch As String = regExMatch.Groups(1).Value
    Dim pcs As String = regExMatch.Groups(2).Value
End If

正则表达式(\d{3}/\d{3})/(\d{2})分解为......

  • (创建一个捕获组
  • \d{3}查找3位数字(0-9)
  • /寻找那个角色
  • \d{3}查找3位数字(0-9)
  • )关闭并存储捕获组
  • /寻找那个角色
  • (创建一个捕获组
  • \d{2}查找2位数字(0-9)
  • )关闭并存储捕获组

(注意,在ASP.NET中,不需要转义/字符...在大多数其他正则表达式解析器中它是必要的。)

如果您不需要检索pcs,请删除第二个捕获组(因此看起来像(\d{3}/\d{3})/\d{2})...但是您还需要删除regExMatch.Groups(2).Value否则您将获得例外。

如果您需要检查可变数字的数字,请使用\d{3,5}的格式,这意味着最少3个,最多5个数字。

更新 - 基于OP提供的新信息。

使用此表达式:"batch (.+)/(\d+) pcs"

regExMatch = System.Text.RegularExpressions.Regex.Match(myString, "batch (.+)/(\d+) pcs", 
               System.Text.RegularExpressions.RegexOptions.IgnoreCase)