AHK脚本需求:将姓名转邮箱格式从John.Smith@test.com改为JSmith@test.com
AutoHotkey 脚本:生成首字母+姓氏格式的邮箱
我来帮你搞定这个邮箱模板的脚本修改需求!原来的逻辑是把全名转成First.Last@test.com,现在要改成FirstInitialLast@test.com(比如John Smith → JSmith@test.com),下面是完整的可运行脚本,再给你拆解关键步骤:
; 弹出输入框获取客户全名 InputBox, ClientName, Client Name, Please enter the client's full name:, , 300, 150 if ErrorLevel ; 处理用户取消输入的情况 return ; 拆分姓名为数组,提取首字母和姓氏 NameParts := StrSplit(ClientName, A_SPACE) if (NameParts.Length() >= 2) { ; 提取名字的第一个字符作为首字母 FirstInitial := SubStr(NameParts[1], 1, 1) ; 提取姓氏(如果有中间名,改成NameParts[NameParts.Length()]取最后一个部分) LastName := NameParts[2] ; 拼接首字母+姓氏 UserID := FirstInitial . LastName } else { ; 兼容单字姓名的情况(可选逻辑) UserID := ClientName } ; 移除所有可能残留的空格(防止用户输入多空格) StringReplace, UserID, UserID, %A_SPACE%, , All ; 生成最终邮箱地址 EmailAddress := UserID . "@test.com" ; 把邮箱复制到剪贴板并弹窗提示 Clipboard := EmailAddress MsgBox, Generated Email:`n%EmailAddress%
关键逻辑说明:
- StrSplit函数:把输入的全名按空格拆分成数组,比如
John Smith会拆成["John", "Smith"],方便分别提取名和姓氏。 - SubStr函数:截取名字的第一个字符,比如从
John里拿到J。 - 容错处理:如果用户只输入了单字姓名(比如
Lee),脚本会直接用这个单字作为用户名,避免报错。 - 扩展优化:如果需要支持带中间名的姓名(比如
John Michael Smith),只需要把LastName := NameParts[2]改成LastName := NameParts[NameParts.Length()],这样会自动取最后一个部分作为姓氏,生成JSmith@test.com。
内容的提问来源于stack exchange,提问作者CY3R
相关产品推荐
相关产品推荐

