一个字符串属性能够拥有一个函数吗?

4

这是我在这个网站上发布的第一篇文章,我非常喜欢这个社区。

我正在创建一个邮箱生成系统。这个系统可以获取学生的姓名,生成一些模式,并检查邮箱地址是否可用,最后将其添加到数据库中。

例如,我的名字是“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);
    }
}

如上所述,我需要使用空格来拆分每个字符串。例如,属性将如下所示:
名字:奥斯卡·丹尼尔
名字(数组):{ 奥斯卡,丹尼尔 }
因此,我的问题是:有没有一种方法可以删除属性数组?因为我认为它是多余的。我试图为它们添加一个名为ToArray()的函数,但我无法做到这一点。
如果有任何疑问,请告诉我。

1
"first" 名称有多少个? - Rubens Farias
例如,我的名字是“Oscar Daniel”,我的姓氏是“Fimbres Puente”。所以我的全名是“Oscar Daniel Fimbres Puente”? - Kirk Woll
您的问题不太清楚... 您是在寻找扩展方法吗? - Shekhar_Pro
为什么你不能把数组设置为null呢? - slugster
好的,这是一个墨西哥系统,我只是用英文编写了这个类。 - oscar.fimbres
显示剩余4条评论
1个回答

7

仅仅提一下,我认为你需要一个人类,具有属性如firstname,lastname等。你需要对个人采取一些操作来生成一些模式,例如firstname数组的首字母加上lastname的前4个字母以及某些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.
  }
}

这可能过于简单,当然,你必须每次重新计算模式,但它简单易懂。这完全取决于你如何使用它。
你甚至可以使用正则表达式从不同的属性中提取所需数据。如果有特定规则,很容易编写它们。作为介绍,这里有一些关于正则表达式的信息。
但是回答你标题中的问题,是的,字符串属性(或任何对象)可以有扩展方法,比如ToArray()(任何你想要的名称)。在这里查看更多信息。

你说得对,我正在寻找类似扩展方法的东西。 但我真的意识到Person类不需要那些属性数组。所以你在GetEmailRespPattern函数中的注释是最好的方式。 - oscar.fimbres
很酷。只需确保如果模式之间有任何常见功能(例如拆分名字并取每个字母的第一个字母),则将其移动到另一个函数以供重用。 - coder net

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接