我正在研究這種驗證學生 ID 號的方法。身份證號碼的憑據是;第一個字符必須是9,第二個字符必須是0,不能有任何字母,數字必須是9個字符長。如果學生 ID 有效,該方法將回傳 true。當我通過 main 手動測驗該方法時,即使我輸入了錯誤的輸入,結果也是如此。在我的代碼中,我嵌套了 if 陳述句,但我最初沒有嵌套它們。驗證輸入以與 ID 號憑據保持一致的更好方法是什么?將字串轉換為陣列會更理想嗎?
public static bool ValidateStudentId(string stdntId)
{
string compare = "123456789";
if (stdntId.StartsWith("8"))
{
if (stdntId.StartsWith("91"))
{
if (Regex.IsMatch(stdntId, @"^[a-zA-Z] $"))
{
if (stdntId.Length > compare.Length)
{
if (stdntId.Length < compare.Length)
{
return false;
}
}
}
}
}
uj5u.com熱心網友回復:
你可以試試正則運算式:
public static bool ValidateStudentId(string stdntId) => stdntId != null &&
Regex.IsMatch(stdntId, "^90[0-9]{7}$");
模式解釋:
^ - anchor - string start
90 - digits 9 and 0
[0-9]{7} - exactly 7 digits (each in [0..9] range)
$ - anchor - string end
所以我們9
總共有數字(90
前綴 - 2 位數字 7 位任意數字),從90
uj5u.com熱心網友回復:
將字串轉換為陣列會更理想嗎?
每個字串都是 a 型別,char[]
您可以訪問它索引處的每個字符,就像它是一個陣列一樣。所以不,沒有必要將它轉換為陣列(如果你想要一個所有字符的副本作為陣列,你可以使用ToCharArray
)。
驗證輸入以與 ID 號憑據保持一致的更好方法是什么?
好吧,您可以使用正則運算式,但是對于這個簡單的任務,純字串方法就可以了:
public static bool ValidateStudentId(string stdntId)
{
return stdntId?.Length == 9
&& stdntId.StartsWith("90")
&& stdntId.All(char.IsDigit);
}
為什么你的代碼不起作用?您不會檢查自己的規則,這些規則是:
第一個字符必須是9,第二個字符必須是0,不能有任何字母,數字必須是9個字符長
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373401.html