如何使用 VB 从字符串中删除表情符号

How to remove Emoji from string using VB

我需要使用经典 asp 和 vb 脚本从字符串中删除一些表情符号字符。这是我拥有的:

重复/其他

预定

领先

而我需要的是:

重复/其他

预定

我已经能够使用此功能删除表情符号,但我想保留特殊字符,例如正斜杠 /、空格、&、: 等

感谢任何帮助。

Function strClean (strtoclean)
Dim objRegExp, outputStr
Set objRegExp = New Regexp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "((?![a-zA-Z0-9]).)+"
outputStr = objRegExp.Replace(strtoclean, "-")
objRegExp.Pattern = "\-+"
outputStr = objRegExp.Replace(outputStr, "")
strClean = outputStr
End Function

您当前的正则表达式匹配除换行符和 ASCII 字母数字字符之外的任何字符。它不匹配表情符号,因为基于 VBScript ECMA-262 第三版的正则表达式引擎无法仅用 . 模式匹配星体平面字符。

如果您只想为当前模式添加表情符号匹配支持,您可以将 . 替换为 (?:[[=14=]-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]) 模式并使用

objRegExp.Pattern = "(?:(?![a-zA-Z0-9])(?:[[=10=]-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))+"

regex demo

如果您只想删除除 ASCII 字符以外的所有字符,您可以使用

objRegExp.Pattern = "objRegExp.Pattern = "(?:(?![ -~])[\s\S])+"

该模式匹配不等于可打印 ASCII 字符的任何一个或多个 (+) 个字符([\s\S] 匹配任何空白和非空白字符)。