【问题标题】:extract date from string in access table从访问表中的字符串中提取日期
【发布时间】:2018-08-19 10:51:27
【问题描述】:

我正在尝试从访问中的以下字符串中提取date。不知道怎么做,因为所有格式都不同。

AT (ALL LOCATION) (XYZ) (15TH FEB10) (some).xlsx
AT) (XYZ) (DEC-15) (bdd).xlsx
(AT SOUTH) (XYZ) (FEB11 TO MAR11) (some).xlsx
(AT) (XYZ) (APR13-DEC13) (some - sky).xlsx

【问题讨论】:

  • 我看到不止一个约会。日期总是在同一个地方吗?它们还会如何变化?你能举例说明它最终应该是什么样子吗?这不是“代码编写服务”,它更像是开发人员(任何经验水平)可以就特定问题提出特定问题的地方,分享他们现有的代码并解释到目前为止已经尝试和研究的内容,以及详尽的示例相关数据和期望的结果。请参阅 minimal reproducible examplehelp center 以及 these tips
  • 日期可以在文件名中的不同位置,因为名称可能会有所不同。我问过这个问题是否可以通过任何类型的正则表达式或任何其他可能的方法来查看文件名中是否包含日期。
  • 日期是包含数字的字符串中的唯一“单词”吗?或者,他们是否总是在其中包含JANFEBMAR…etc 之一?如果没有,你可能不走运。没有任何东西能够提取不遵循某种模式的字符串部分。
  • 谢谢,日期将始终为 JAN15 或 15Feb18 格式。我想我必须手动完成。
  • 日期是字符串中唯一包含数字的“单词”吗?

标签: sql vba date ms-access


【解决方案1】:

此函数返回括号中第一次出现的包含数字的字符串:

Public Function bracketedWordWithNumber(strIn As String) As String

    Dim arr() As String, x As Integer

    'test for number in parentheses
    If Not strIn Like "*(*#*)*" Then Exit Function

    'remove file extension: everything after last dot '.'
    If InStr(strIn, ".") > 0 Then strIn = Left(strIn, InStrRev(strIn, ".") - 1)

    'remove right parentheses ')'
    strIn = Replace(strIn, ")", "")

    'split into array on left parentheses '('
    arr = Split(strIn, "(")

    'iterate array
    For x = 0 To UBound(arr)
        'find strings with numbers
        If arr(x) Like "*#*" Then
            'return match
            bracketedWordWithNumber = arr(x)
            'stop after the first match
            Exit Function
        End If
    Next x

End Function

更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多