亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# 如何寫入數組的每個部分?

C# 如何寫入數組的每個部分?

C#
陪伴而非守候 2022-11-22 16:22:53
我想為數組的每個部分編寫不同的“if”語句。例如,關于 NHS 號碼、出生日期、職位等的 if 語句……它們都有不同的“if”語句。我如何為所有這些編寫單獨的 if 語句?這是檢查字段有效性的系統的一部分。我努力了:string[] NHSarray = new string[0];我認為這種語法符合我需要做的事情,我就是想不通。List<int> NHSnumber = new List<int>();List<int> DateOfBirth = new List<int>();List<int> Title = new List<int>();List<int> GivenName = new List<int>();List<int> Surname = new List<int>();List<int> Gender = new List<int>();using (var reader = new StreamReader(@"C:\Users\wy6282\Desktop\VS\nhsBatchChecker\Patients.txt")){    string line;    while ((line = reader.ReadLine()) != null)    {        //split the line        string[] parts = line.Split(new[] { "Error" }, StringSplitOptions.None);        //get valid integers        NHSnumber.Add(GetInt(parts[0].Split(' ', '\'')));        DateOfBirth.Add(GetInt(parts[1].Split(' ', '\'')));        Title.Add(GetInt(parts[2].Split(' ', '\'')));        GivenName.Add(GetInt(parts[3].Split(' ', '\'')));        Surname.Add(GetInt(parts[4].Split(' ', '\'')));        Gender.Add(GetInt(parts[5].Split(' ', '\'')));    }}
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

假設您的患者信息始終包含所有列出的數據,并且順序相同,我會將拆分后的數據映射到一個對象中,可能稱為患者:


public class Patient

{

    public int NHSNumber {get; set;}

    public dateTime DateOfBirth {get; set;}

    public string Title {get; set;}

    public string GivenName {get; set;}

    public GenderOptions Gender {get; set;}

}

創建枚舉 GenderOptions:


public enum GenderOptions

{

    M,

    F,

    U

一旦你得到一個對象,然后驗證它。您可以通過多種方式執行此操作,但有一種簡單的方法,例如:


public bool IsValidPatient(Patient patient)

{

    // setup guard clauses

    if(patient.NHSNumber < 10) return false;

    if(patient.DateOfBirth.Year < 1900) return false


    // more checks

}

當然,如果你想根據出錯的地方顯示錯誤,那么你可以返回某種狀態對象而不是 bool,它包含一個消息字段或指示錯誤的東西。如果這些檢查并非僅針對患者,那么您可能希望將它們拆分成單獨的檢查,并將您需要的內容分組為一種驗證患者的方法。


查看完整回答
反對 回復 2022-11-22
?
達令說

TA貢獻1821條經驗 獲得超6個贊

根據您的描述,您正在嘗試逐行讀取文件中的一些輸入,按某個鍵拆分(看起來您正在嘗試使用“錯誤”一詞作為拆分器,這看起來很奇怪),然后解析內容轉化為有用的數據。正確的?


如果您正在讀取的文件具有不變的已知格式,基本上您只需要訪問“部分”數組的正確元素并分配值。你走在正確的軌道上。我建議,如果您知道數據源每個部分的數據類型是什么,那么您可以使用適當的轉換而不是嘗試手動解析它。


您可以使用Integer.TryParse(string, out int)來確保無效數據不會導致未處理的異常,但這需要額外的步驟。


int nhsNum;

if(!Integer.TryParse(part[0], out nhsNum) {

    // handle invalid number values here.

}

// at this point nhsNum will have the correctly parsed integer value.

NHSNumber.add(nhsNum)

您將為“部分”數組中的每個元素重復此操作。


DateTime.TryParse(String, out DateTime)如果文件中的日期格式與系統的日期格式匹配,則可以使用。但是,為了更好地處理全球化,如果文件包含預定義的日期格式,您還可以使用DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)并通過 IFormatProvider 使用準確的日期格式。


最后一點。您的“dateOfBirth”可能應該是 aList<DateTime>而不是 aList<int>


查看完整回答
反對 回復 2022-11-22
  • 2 回答
  • 0 關注
  • 128 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號