我是C#noob,我有這個任務。 我有TextBox,用戶需要輸入13位數字。 我需要檢查的是用戶正確填充該文本框。只有數字可以接受。c#代碼檢查是字符串只包含數字
之後,我需要檢查是最後一次輸入(第13)號碼與我從其他函數獲得的int64變量相等。
謝謝!
我是C#noob,我有這個任務。 我有TextBox,用戶需要輸入13位數字。 我需要檢查的是用戶正確填充該文本框。只有數字可以接受。c#代碼檢查是字符串只包含數字
之後,我需要檢查是最後一次輸入(第13)號碼與我從其他函數獲得的int64變量相等。
謝謝!
我不會告訴你在哪裏放這個代碼,只是代碼的條件。請嘗試做一些事情,然後提出一個問題,告訴你所困擾的是什麼。
int j = SomeFunction();
int i = 0;
bool bIisJ = false;
if (int.TryParse("Your String", out i))
if(i.ToString().Length == 13)
bIisJ = i.ToString()[12] == j.ToString();
嗯,我不會說i.ToString()應該有13的長度,那麼「0000112222222」呢?寧可像'
@RaphaëlAlthaus你的正確答案......我只是做了基於簡單的回答,至少它給了OP一些自己制定的條件,而不是我們想到的所有條件。 – LukeHennerley
@RaphaelAlthus我同意你的意見。我的問題很糟糕,我接受批評。我確實嘗試了一些代碼,但認爲我會看起來很荒謬,所以我沒有發佈代碼。最後我找到簡單的解決方案:(!Char.IsDigit(C)) 公共靜態字符串函數(字符串輸入){ 的foreach (在輸入字符C) { 如果 返回false; } – user2032642
假設你的TextBox控件的名稱爲Textbox1的:
Textbox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(Textbox1_KeyPress);
Textbox1.MaxLength = 13;
Textbox1.Validating += new CancelEventHandler(Textbox1_Validating);
private void Textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
e.Handled = true;
}
void Textbox1_Validating(object sender, CancelEventArgs e)
{
if(Textbox1.Text.Trim().Length != 13)
{
e.Cancel = true;
}
else if(Convert.ToInt64(Textbox1.Text.Trim()[12]) != 0) {
e.Cancel = true;
}
else e.Cancel = false;
}
public static Boolean isNumber(String test) {
char[] chars = test.ToCharArray();
foreach(char c in chars) {
int charCode = (int)c;
if(charCode < 48 || charCode > 57)
return false;
}
return true;
}
更小白友好的方法?
出於好奇,這是更小菜館友好嗎?當然,將OP指向'int.TryParse()'的文檔會更有幫助,因爲這可能是實現'string> int'轉換的最佳方法:) – LukeHennerley
我當然批准了更多手動方法,當我是noob時,封裝是首先難以理解。 – Machinarius
我們都有我們需要做的事情。它會幫助我們瞭解您嘗試過的代碼。堆棧溢出通常不是'爲我工作'的地方。如果你來到這裏並且毫不費力地提出問題,你很可能會得到一個毫不費力的答案。 –
查看int.TryParse和string.ToCharArray.Last。 – ken
@GeorgeStocker這個問題與你直接關閉並提及meta的其他問題類似,但你會發現,即使問題太糟糕,這裏的某個人願意嘗試幫助他,但新用戶沒有覺得我們不習慣他們,你不是目標:) – Aristos