【问题标题】:Search a string and extracting the size or quantity values from a string搜索字符串并从字符串中提取大小或数量值
【发布时间】:2011-09-15 19:09:13
【问题描述】:

我正在尝试从数据库中所有产品的标题中自动提取所有尺寸和数量。所以我需要提取一些文本之前的大小或数量。

例如在以下字符串中,我需要提取案例数(1000)。

“Micromesh II 活检处理/包埋盒,4 隔间, 白色 - 1000/箱"

我需要一种在字符串中搜索字符串“/Case”的方法,然后提取前面的 4 个字符。我正在考虑使用子字符串并删除最后 5 个字符,但我的数据库中的一些描述不同,我不能这样做。

这在VB.NET 中可行吗?

【问题讨论】:

  • 有 1000 个案例,而不是 100 个 :-) :-) 我希望您的代码能够更准确地提取 :-) :-) :-)
  • / 是否总是表示它前面有数字?为什么找不到“4 个隔间”的 4 个?
  • 几乎所有程序员的必备技能:regular-expressions.info
  • 您喜欢全部在数据库端还是全部在 VB.NET 中完成?还有你的数据库引擎是什么?
  • 我没有偏好,如果我可以在数据库中使用 SQL 进行操作会更容易。我正在使用 sql server 2008

标签: .net regex vb.net


【解决方案1】:

LastIndexOf

这将为您提供您需要与Substring 一起使用的位置。

未测试:

myString = myString.Substring(myString.LastIndexOf("/Case") - 4, 4)

【讨论】:

    【解决方案2】:

    这应该可以帮助您入门。真的不知道你的分隔符是什么。只是数字在 / 之前。

    Dim s As String = "Micromesh II Biopsy Processing/Embedding Cassettes, 4 Compartment, White - 1000/Case"
    Dim idxSlash As Integer = s.LastIndexOf("/")
    Dim idxStart As Integer = idxSlash - 1
    While Char.IsDigit(s(idxStart))
      idxStart -= 1
    End While
    Dim result As String = s.Substring(idxStart, idxSlash - idxStart)
    

    【讨论】:

      【解决方案3】:

      使用正则表达式。它会工作得更快

      【讨论】:

        【解决方案4】:

        首先找出您的产品名称的通用模式。然后编写一个正则表达式,它可以找到你所有的目标。然后您可以在 vb.net 或 c# 中使用 Regex 类和 Match 方法来提取它们。它认为正则表达式是这样做的最佳选择。

        【讨论】:

        【解决方案5】:

        @Oded's 很好,但如果数字不是 4 位数,则会中断。所以:

            ' Works as long as number is preceded by space and followed by /
            s.Substring(0, s.LastIndexOf("/")).Substring(s.LastIndexOf(" "))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-23
          • 2016-08-26
          • 2015-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多