2016-03-20 23 views
0

Dize almak ve boşluklar hariç tüm boşlukları silerek geri döndürmek için bir işlev yazdım. Boşluklar dizenin başında veya sonunda olduğunda veya başka bir alandan önce veya sonra olduğunda, bunlar da silinir.satır sonu ve satır besleme hatası türü uyuşmuyor

Ex."_a_____a", "a_a" haline gelecektir. dize satır başı veya satır feed'li başladığında nedense

UPDATE table1 
SET field1 = whitespace(field1) 

, ben bir Tür uyumsuzluğu hata alırsınız:

Ben aşağıdaki sorguyu koşuyordu

("_" bir alanı temsil) .

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 

Ben Public Function whiteSpace(ByVal field As Variant) As String için Public Function whiteSpace(ByVal field As String) As String alışverişi denedim ve hata alamadım ama başı ve satır feed'li alanları aynı kaldı.

+0

yukarı kodunuzu kırın: 1. field1' 'dize değeri elde, 2.' ayarlayarak 3. yazma SQL güncelleme, fonksiyonu üzerinden bu dize değerini manipüle yeni değerle field1 '. – Ambie

cevap

0

Normal ifadeniz yanlış. boşluk normalleştirmek için bu işlevi ile deneyin:

'' 
' 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 
+0

Teşekkürler, ama ön ve arkadaki boşlukları kestirmem gerekiyor, ** beyaz boşlukları ** dizgeyle, ** boşluk değilse **, bir boşluk ile dizedeki ** boşlukların ** sırasını değiştirin. – MJH

+0

Açıklamalarım yanıltıcı, işlev tüm bunları yapar. Onu güncelleyeceğim. –

+0

Lütfen kodunuzu da açıklayınız. Teşekkür ederim. – MJH

İlgili konular