Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 错误类型与回车符和换行符不匹配_Vba_Ms Access - Fatal编程技术网

Vba 错误类型与回车符和换行符不匹配

Vba 错误类型与回车符和换行符不匹配,vba,ms-access,Vba,Ms Access,我编写了一个函数来接收一个字符串并返回它,除了空格外,所有空格都被删除。当空格位于字符串的开头或结尾,或者在另一个空格之后或之前时,它们也会被删除 例如“\u a\u\u\u\u\a”将变成“a\u a”。(“u”表示一个空格) 我正在运行以下查询: UPDATE table1 SET field1 = whitespace(field1) 出于某种原因,当字符串以回车符或换行符开头时,我收到一个类型不匹配的错误 Public Function whiteSpace(ByVal field A

我编写了一个函数来接收一个字符串并返回它,除了空格外,所有空格都被删除。当空格位于字符串的开头或结尾,或者在另一个空格之后或之前时,它们也会被删除

例如“\u a\u\u\u\u\a”将变成“a\u a”。(“u”表示一个空格)

我正在运行以下查询:

UPDATE table1
SET field1 = whitespace(field1)
出于某种原因,当字符串以回车符或换行符开头时,我收到一个类型不匹配的错误

Public Function whiteSpace(ByVal field As String) As String
    Dim i As Integer
    If (IsNull(field)) Then
        field = ""
        GoTo catchNulls
    End If
    field = RegexReplace(field, "(?=\s)[^ ]", " ")
    field = Trim(field)
    field = RegexReplace(field, "  +", " ")

catchNulls:
    whiteSpace = field
End Function 

Function RegexReplace(ByVal text As String, _
                      ByVal replaceWhat As String, _
                      ByVal replaceWith As String, _
                      Optional ByVal ignoreCase As Boolean = False) As String
    On Error GoTo catch
    Dim RE As Object
    Dim str As String

    str = Empty
    Set RE = CreateObject("vbscript.regexp")
    RE.ignoreCase = ignoreCase
    RE.pattern = replaceWhat
    RE.Global = True
    str = RE.Replace(text, replaceWith)
continue:
    RegexReplace = str
    Exit Function
catch:
    Call raiseError(Err.Number, Err.Source, Err.Description)
    GoTo continue
End Function

我尝试将
公共函数空格(ByVal字段作为字符串)交换为字符串
公共函数空格(ByVal字段作为变体)交换为字符串
,但没有得到错误,但带回车符和换行符的字段保持不变。

您的正则表达式不正确。尝试使用此函数来规范化空格:

''
' Strips all the white-spaces from a string and replaces any sequence
' of white-space characters by a single space.
''
Function NormalizeSpace(text As String) As String
  Static re As Object
  If re Is Nothing Then
    Set re = CreateObject("VBScript.RegExp")
    re.Global = True
    re.Pattern = "\s+"
  End If
  NormalizeSpace = VBA.Trim$(re.replace(text, " "))
End Function

分解代码:1。获取
字段1
,2的字符串值。通过函数3操纵该字符串值。通过将
field1
设置为新值来编写SQL更新。谢谢,但我需要去掉前导和尾随空格,去掉字符串中的空格,除非是空格,否则将字符串中的空格序列替换为一个空格。我的描述有误导性,函数会完成所有操作。我将对其进行更新。代码将使用指定的替换字符串“”替换与正则表达式模式“\s+”匹配的所有字符串,然后修剪结果。您的代码似乎不考虑空值。这是个问题吗?如果re什么都不是,
有什么意义呢?空字符不是空白字符()。
If re Is Nothing
创建regex对象(如果尚未创建该对象以提高性能)。