2017-04-23 11 views
-5

私は、最初と最後の文字列はちょうど1つの名前でなければならず、中間の名前は正確にゼロまたは1つの名前..ここにいる皆さん、これをどうやってするのか考えていますか?前もって感謝します! FirstNameについては正確に1つの名前でなければならない文字列と、正確にゼロまたは1つの名前でなければならない別の文字列

public enum Gendertype { Male, Female }; 
public class Player 
{ 
    public string FirstName { get; set; } 
    public string MiddleName { get; set; } 
    public string LastName { get; set; } 
    public DateTime DateOfBirth { get; set; } 
    public string Nationality { get; set; } 
    public string ShortNationality { get; set; } 
    public Gendertype Gender { get; set; } 

    public Player(string fn, string mn, string ln, DateTime dob, string n, string sn, Gendertype g) 
    { 
     FirstName = fn; 
     MiddleName = mn; 
     LastName = ln; 
     DateOfBirth = dob; 
     Nationality = n; 
     ShortNationality = sn; 
     Gender = g; 
    } 

} 
class Program 
{ 
    static void Main() 
    { 
     Player person1 = new Player("Rafael" + "\n", "" + "\n", "Nadal" + "\n", new DateTime(1986, 06, 03), "Spanish" + "\n", "ES" + "\n", Gendertype.Male); 
     Console.WriteLine("Player 1: \n First name = {0} Middle name = {1 } Last name = {2} Date of birth = {3:yyyy/MM/dd} \n Nationality = {4} Short name nationality = {5} Gender = {6}", person1.FirstName, person1.MiddleName, person1.LastName, person1.DateOfBirth, person1.Nationality, person1.ShortNationality, person1.Gender); 
     //Nedenstående aldersudregner er taget fra Bob Tabors C# kurser 
     DateTime DateOfBirth = DateTime.Parse("1986/06/03"); 
     TimeSpan myAge = DateTime.Now.Subtract(DateOfBirth); 
     Console.WriteLine(" Age = " + myAge.TotalDays/365 + "\n" + "\n"); 
+0

あなたが求めていることは明確ではありません。文字列に値があるかどうかチェックするだけですか? 'string.IsNullOrEmpty()'に似ていますか? – David

+2

「ちょうど1つの名前」と「0または1つの名前」とはどういう意味ですか? –

+0

ひとつの名前は、「FirstName」には1つの単語が含まれていますか? –

答えて

0

LastNameあなたが' 'に分割し、カウントが1

bool valid = fn.Split(' ').Length == 1 

そしてMiddleNameが、それはまた、nullまたは空にしてみましょうためであることがわかります。

bool valid = string.InNullOrEmpty(mn) || mn.Split(' ').Length == 1 

スペースが開始または終了のいずれかの名前に入ったと思われる場合は、.Trimを追加できます。このため

bool validFN = fn.Trim().Split(' ').Length == 1 
bool validMN = string.InNullOrEmpty(mn) || mn.Trim().Split(' ').Length == 1 
+2

名前にスペースを持つ人は、このアプリケーションを使用することはできません? – David

+0

これは、OPによると、コメントを参照してください –

0

使用String.Split

var names = "Rafael Nadal".Split(); 
foreName = names[0]; 
if(names.Length == 2) 
{ 
    surName = names[1]; 
} 
else if (names.Length == 3) 
{ 
    surName = names[2]; 
    middleName = names[1]; 
} 
else 
    throw new ArgumetException("Whrong number of arguments"); 

あなたの入力はコンマなどの別の文字で区切られている場合しかし、あなたは、パラメータとして文字を期待しSplitのオーバーロードを使用する必要があります。

関連する問題