字符串属性是否具有函数?

osc*_*res 4 c# string

这是我在这个网站的第一篇文章,我对这个社区非常满意.

我正在创建一个生成器电子邮件系统.这包括获取学生的姓名,生成一些模式,检查电子邮件地址是否可用,最后将其添加到数据库中.

例如,我的名字是"Oscar Daniel",我的姓氏是"Fimbres Puente".系统必须生成odfimbresp@domain.com(实际上它会生成许多模式,这只是其中之一).

我有一个名为Person的类,构造函数接收名字和姓氏.生成模式.像这样:

public class Person
{
    public string FirstName { get; set; }
    public string LastName1 { get; set; }
    public string LastName2 { get; set; }
    public string Email { get; set; }

    public string[] FirstName_Array { get; set; }
    public string[] LastName1_Array { get; set; }
    public string[] LastName2_Array { get; set; }

    public Person(string firstName, string lastName1, string lastName2)
    {
        ...

        // it is necessary to split each string in an array
        FirstName_Array = SplitName(firstName);
        LastName1_Array = SplitName(lastName1);
        LastName2_Array = SplitName(lastName2);
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要使用像分隔符这样的空格来分割每个字符串.例如,属性如下:

名:奥斯卡丹尼尔

名字(阵):{Oscar,Daniel}

因此,我的问题是:有没有办法可以删除属性数组?因为我认为我是多余的.我试图只为他们添加一个名为ToArray()的函数,但我不能这样做.

有任何问题或疑问请告诉我.

cod*_*net 7

只是把它扔出去.我认为你有一个Person类,其中包含诸如firstname,last name等属性.你需要采取一些操作来生成一些模式,例如firstname数组的firstletter + lastname的前4个字母+ some pattern@domain.com.

我相信你正试图避免冗余的数组属性.如果是这样,为什么你没有为每个模式的方法,如,

public class person
{
  public string firstname { get;set;}
  public string lastname { get;set;}

  public person(string fname, string lname)
  {
    firstname = fname;
    lastname = lname;
  }

  public string GetEmailRespPattern()
  {
    //split firstname, take what you want
    //take what you want from last name.
   // add extra information.
   //concatenate and return it.
  }
}
Run Code Online (Sandbox Code Playgroud)

这可能过于简单,当然,您必须每次重新计算模式,但它简单易读.这一切都取决于你将如何使用它.

您甚至可以使用正则表达式从不同的属性中提取所需的数据.如果您有特定的规则,则很容易编写它们.就像介绍一样,这里有关于正则表达式的一些信息.

但是要回答标题中的问题,是的,字符串属性(或任何对象)可以有一个扩展方法,例如ToArray()(您想要的任何名称).看到这里.