在Excel中从文本创build干净的URL

我想从这样的文本中创build一个干净的URL:

阿尔法testing“购买贝尔塔全球联营公司(C)

该URL应如下所示:

阿尔法 – testing – 购买 – 的 – 贝塔 – 全球联营-C

目前我在Excel中使用这个公式:

=LOWER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A38;"--";"-");" / ";"-");" ";"-");": ";"-");" - ";"-");"_";"-");"?";"");",";"");".";"");"'";"");")";"");"(";"");":";"");" ";"-");"&";"and");"!";"");"/";"-");"""";"")) 

但是,我似乎没有捕捉到所有的特殊符号等,因此我的URL不像我想要的那样干净。

你知道一个Excel公式或VBA代码,它确保所有的特殊符号被正确地转换为干净的URL吗?

谢谢。

我可以build议下面的函数,你可以把一个VBA模块,并使用一个正常的公式:

 Function NormalizeToUrl(cell As Range) Dim strPattern As String Dim regEx As Object Set regEx = CreateObject("vbscript.regexp") strPattern = "[^\w-]+" With regEx .Global = True .Pattern = strPattern End With NormalizeToUrl = LCase(regEx.Replace(Replace(cell.Value, " ", "-"), "")) End Function 

在这里输入图像说明

重点是,我们用开头的连字符代替所有的空格,然后用正则expression式匹配任何非单词和非连字符,并用RegExp.Replace删除它们。

更新

在你的评论之后,你仍然不清楚你想用Unicode字母做什么。 用连字符删除或replace。 这是我试图从你的公式重build的function,但逻辑可能有缺陷。 我更喜欢上面的通用方法。

 Function NormalizeToUrl(cell As Range) Dim strPattern As String Dim regEx As Object Set regEx = CreateObject("vbscript.regexp") strPattern = "[^\w -]" With regEx .Global = True .Pattern = "[?,.')(:!""]+" ' THESE ARE REMOVED End With NormalizeToUrl = regEx.Replace(cell.Value, "") NormalizeToUrl = Replace(NormalizeToUrl, "&", "and") ' & TURNS INTO "and" With regEx .Global = True .Pattern = strPattern ' WE REPLACE ALL NON-WORD CHARS WITH HYPHEN End With NormalizeToUrl = LCase(regEx.Replace(Replace(NormalizeToUrl, " ", "-"), "-")) With regEx .Global = True .Pattern = "--+" ' WE SHRINK ALL HYPHEN SEQUENCES TO SINGLE HYPHEN End With NormalizeToUrl = regEx.Replace(NormalizeToUrl, "-") End Function