Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
Sql vb中文本字符串的清理_Sql_Vb.net_String - Fatal编程技术网

Sql vb中文本字符串的清理

Sql vb中文本字符串的清理,sql,vb.net,string,Sql,Vb.net,String,我正在尝试从一个文本字段中清除一个字符串,该字段将是sql查询的一部分 我创建了一个函数: 私有函数cleanStringTopropertCase(dirtyString作为字符串)作为字符串 Dim cleanedString作为String=dirtyString '删除除@、-和之外的所有非字母数字字符。' cleanedString=Regex.Replace(cleanedString,[^\w\.@-],“”) '修剪左右两侧不必要的空间' cleanedString=修剪(cle

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

我创建了一个函数:

私有函数cleanStringTopropertCase(dirtyString作为字符串)作为字符串
Dim cleanedString作为String=dirtyString
'删除除@、-和之外的所有非字母数字字符。'
cleanedString=Regex.Replace(cleanedString,[^\w\.@-],“”)
'修剪左右两侧不必要的空间'
cleanedString=修剪(cleanedString)
'将双空格替换为单空格'
cleanedString=Regex.Replace(cleanedString,“,”)
'将每个单词的第一个字母的文本转换为大写'
cleanedString=StrConv(cleanedString,VbStrConv.ProperCase)
'返回干净的字符串'
返回清除的字符串
端函数
但是,当我试图用两个单词来清理任何文本时,它会将所有空白都去掉。“达斯的自行车”变成了“达斯比克”。我假设我需要修改以下行:

cleanedString=Regex.Replace(cleanedString,[^\w\.@-],“”)
因此,它还允许保留单个空白字符。我在任何在线教程或MSDN网站上都找不到关于如何这样做的建议()

使用
“[^\w\,@\-\']”而不是您的模式字符串

还有,我会用

Regex.Replace(cleanedString, " +", " ")
而不是

Regex.Replace(cleanedString, "  ", " ")
使用
“[^\w\,@\-\']”“
代替您的模式字符串

还有,我会用

Regex.Replace(cleanedString, " +", " ")
而不是

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

或者,如果你不是regex的超级粉丝

私有函数cleanStringTopropertCase(dirtyString作为字符串)作为字符串
'指定有效字符
Dim validChars As String=“@-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZ”
“删除除有效字符以外的所有字符”
Dim cleanedString As String=dirtyString.Where(函数(c)validChars.Contains(c)).ToArray
Dim myTI As Globalization.TextInfo=新的Globalization.CultureInfo(Globalization.CultureInfo.CurrentCulture.Name).TextInfo
'返回干净的字符串'
返回myTI.ToTitleCase(cleanedString.Trim)
端函数

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

私有函数cleanStringTopropertCase(dirtyString作为字符串)作为字符串
'指定有效字符
Dim validChars As String=“@-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVWXYZ”
“删除除有效字符以外的所有字符”
Dim cleanedString As String=dirtyString.Where(函数(c)validChars.Contains(c)).ToArray
Dim myTI As Globalization.TextInfo=新的Globalization.CultureInfo(Globalization.CultureInfo.CurrentCulture.Name).TextInfo
'返回干净的字符串'
返回myTI.ToTitleCase(cleanedString.Trim)
端函数

不要这样做。你应该使用parameters.SLaks,你能用一些示例代码进一步扩展这个答案吗?哦,我现在明白你的意思了。我不能这样做,因为我正在向一个现有的vb应用程序添加一个模块,而且我在使用数据库时受到限制。因此,虽然你当然是对的,一个过程会更好,但我必须在函数中这样做。不要这样做。你应该使用parameters.SLaks,你能用一些示例代码进一步扩展这个答案吗?哦,我现在明白你的意思了。我不能这样做,因为我正在向一个现有的vb应用程序添加一个模块,而且我在使用数据库时受到限制。因此,虽然你当然是对的,一个过程会更好,但我必须在函数中这样做。