在vb中清理文本字符串

时间:2013-05-14 14:01:01

标签: sql vb.net string

我正在尝试从文本字段中清除字符串,该字符串将成为sql查询的一部分。

我创建了一个函数:

Private Function cleanStringToProperCase(dirtyString As String) As String
    Dim cleanedString As String = dirtyString
    'removes all but non alphanumeric characters except @, - and .'
    cleanedString = Regex.Replace(cleanedString, "[^\w\.@-]", "")
    'trims unecessary spaces off left and right'
    cleanedString = Trim(cleanedString)
    'replaces double spaces with single spaces'
    cleanedString = Regex.Replace(cleanedString, "  ", " ")
    'converts text to upper case for first letter in each word'
    cleanedString = StrConv(cleanedString, VbStrConv.ProperCase)

    'return the nicely cleaned string'
    Return cleanedString
End Function

但是当我尝试用两个单词清理任何文本时,它会删除所有空格。 “daz的自行车”变成了“Dazsbike”。我假设我需要修改以下行:

   cleanedString = Regex.Replace(cleanedString, "[^\w\.@-]", "")

这样它也可以保留单个空格字符。由于我无法在任何在线教程或MSDN网站上找到它(http://msdn.microsoft.com/en-us/library/844skk0h(v=vs.110).aspx

,因此大家会收到有关如何操作的建议。

2 个答案:

答案 0 :(得分:3)

使用"[^\w\.,@\-\' ]"代替您的模式字符串。

另外,我会用

Regex.Replace(cleanedString, " +", " ")

而不是

Regex.Replace(cleanedString, "  ", " ")

答案 1 :(得分:1)

或者,如果你不是正则表达式的忠实粉丝......

Private Function cleanStringToProperCase(dirtyString As String) As String
    'specify valid characters
    Dim validChars As String = " @-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    'removes all but validChars'
    Dim cleanedString As String = dirtyString.Where(Function(c) validChars.Contains(c)).ToArray
    Dim myTI As Globalization.TextInfo = New Globalization.CultureInfo(Globalization.CultureInfo.CurrentCulture.Name).TextInfo

    'return the nicely cleaned string'
    Return myTI.ToTitleCase(cleanedString.Trim)
End Function
相关问题