Input VBScript将字符串转换为a-z a-z 0-9

Input VBScript将字符串转换为a-z a-z 0-9,input,vbscript,replace,user-input,hta,Input,Vbscript,Replace,User Input,Hta,我有一个hta/VBscript脚本,可以将用户添加到注册表。脚本获取输入的名字和姓氏,并将它们放在一个电子邮件地址(Firstname)中。Lastname@company.com) 我希望像å、ä、ä、ô等字母被替换为普通的a到Z字母。有没有一个简单的方法可以做到这一点 我已经看过这个函数,但它似乎只能替换一个字母,而不能替换它们的数组 我也看过,这似乎有效,但对我来说似乎非常广泛。一定有更简单的方法吗?VBScript无法神奇地知道要映射到哪个字母,因此需要自己创建映射。我会将映射创建为一

我有一个hta/VBscript脚本,可以将用户添加到注册表。脚本获取输入的名字和姓氏,并将它们放在一个电子邮件地址(Firstname)中。Lastname@company.com)

我希望像å、ä、ä、ô等字母被替换为普通的a到Z字母。有没有一个简单的方法可以做到这一点

我已经看过这个函数,但它似乎只能替换一个字母,而不能替换它们的数组


我也看过,这似乎有效,但对我来说似乎非常广泛。一定有更简单的方法吗?

VBScript无法神奇地知道要映射到哪个字母,因此需要自己创建映射。我会将映射创建为一个字典,而不是一堆数组,不过:

Set mappings = CreateObject("Scripting.Dictionary")
mappings.Add "ä", "a"
mappings.Add "â", "a"
mappings.Add "á", "a"
mappings.Add "à", "a"
...
mappings.Add "Ä", "A"
mappings.Add "Â", "A"
...

Function canonicalize(ByVal addr)
  For Each c In mappings.Keys
    addr = Replace(addr, c, mappings(c))
  Next

  Set re = New RegExp
  re.Pattern = "[^a-z0-9.@]"
  re.Global  = True
  re.IgnoreCase = True

  Canonicalize = re.Replace(addr, "")
End Function
函数末尾的正则表达式替换将删除以前任何映射都没有包含的所有非正典字符

您也可以通过定义“替换类”完全使用正则表达式来实现这一点:

Set mappings = CreateObject("Scripting.Dictionary")
mappings.Add "äâáà..." , "a"
mappings.Add "ÄÂ..."   , "A"
...

Function canonicalize(ByVal addr)
  Set re = New RegExp
  re.Global = True
  re.IgnoreCase = False

  For Each c In mappings.Keys
    re.Pattern = "[" & c & "]+"
    addr = re.Replace(addr, mappings(c))
  Next

  re.Pattern = "[^a-z0-9.@]"
  re.IgnoreCase = True

  Canonicalize = re.Replace(addr, "")
End Function