【发布时间】:2015-05-02 23:30:43
【问题描述】:
我正在尝试修改现有项目。请原谅我缺乏知识,我们的开发人员最近离开了公司,我正在尝试解决一个问题,直到我们雇用一个新人。
这是一个基于其他信息发送电子邮件的网络表单应用程序。所有名称均采用以下格式之一:
- 名字姓氏
- 名字姓氏姓氏2
- 名字姓氏-姓氏2
我只是想处理一个字符串来生成一个电子邮件地址。同样,它们遵循一个固定的格式,即 firstname.lastname@domain.com。我想通过找到第一个空格,我可以隔离姓氏并简单地删除多余的空格或连字符,但我的代码似乎不起作用。
我遇到的问题是,任何有多个姓氏的人都会导致交付失败,因为应用程序获取了错误的电子邮件地址。示例:
未能向这些收件人或群组投递:Steven.Smith (Jones@domain.com)
如果只是 Steven Jones 这个名字,它会很好用,我已经测试了好几次。
我的代码:
string fn = FullName.Text.ToString();
string y = fn.Substring(0, fn.IndexOf(" ")).Trim().Replace(" ", "");
string z = fn.Substring(fn.IndexOf(" ") + 1).Trim().Replace(" ", "");
String ToAddress = y + "." + z + "@domain.com";
FullName 变量来自我猜想的这段代码,它在 page_load 类中
System.Security.Principal.WindowsIdentity wi = System.Security.Principal.WindowsIdentity.GetCurrent();
string[] a = Context.User.Identity.Name.Split('\\');
System.DirectoryServices.DirectoryEntry ADEntry = new System.DirectoryServices.DirectoryEntry("WinNT://" + a[0] + "/" + a[1]);
string Name = ADEntry.Properties["FullName"].Value.ToString();
有人对我如何在这里实现我的目标有任何想法吗?我为我缺乏大量知识而道歉,但我对 ASP.NET 并不完全熟悉。从我的研究来看,我可能应该将字符串拆分为一个数组,但我不知道如何在我的程序中实现它。
同样无效的原始代码如下。在我的示例中,我已尝试使其更高效并能够处理三个名称。
string myString1 = txtName.Text.ToString();
int t = myString1.IndexOf(" ", 0);
//Extract the first name for from address
int q = t;
string fn1 = this.txtName.Text.ToString();
string b = fn1.Substring(0,q);
//Extract the Last name for from address
int r= t;
string ln1 = this.txtName.Text.ToString();
string c= fn1.Substring(r+1);
谢谢!
【问题讨论】:
-
请展示一些示例输入和输出。
-
两个人同名会怎样?
-
幸运的是,没有人同名。如果有的话,我们会通过添加一个数字或其他东西来使名称不同。