2014-03-06 27 views
-1

我希望得到一個數字的字符串,而分開的字符串和號碼,然後,做一個循環,並調用一個方法的時候字符串表示的數量。 字符串必須具有這樣的結構:「ABJ3」(只有一個號碼接受和前3個字符)獲得數字符串裏,做一個循環

這是我的代碼,但它重複的次數百,我不知道爲什麼

  int veces = 0; 
      for (int i = 0; i < m.Length; i++) 
      { 
       if (Char.IsDigit(m[i])) 
        veces = Convert.ToInt32(m[i]); 
      } 

      if (m.Length == 4) 
      { 
       for (int i = 0; i <= veces; i++) 
       { 
        m = m.Substring(0, 3); 
        operaciones(m, u, t); 
        Thread.Sleep(100); 
       } 
      } 
      operaciones(m,u,t); 
      if (u.Length >= 14) 
      { 
       u = u.Substring(0, 15); 
      } 

請幫忙嗎?

+0

什麼是'operaciones'方法呢? –

回答

0

你有你的M [I]的ToString(轉換)現在您要發送的字符值Convert.ToInt32,這是一個更高的值(9 = 57爲例)

char t = '9'; 

int te = Convert.ToInt32(t.ToString()); 

Console.WriteLine(te); 

這給我們的9的結果,但

char t = '9'; 

int te = Convert.ToInt32(t); 

Console.WriteLine(te); 

給我們的57

所以,你需要改變的結果

veces = Convert.ToInt32(m[i]); 

veces = Convert.ToInt32(m[i].ToString()); 

希望它幫助。

最好的問候// KH。

+0

是的,它的工作,但它返回veces + 2倍感謝您的快速回復 –

0

不能轉換這樣的數字。你正在覆蓋他們,只拿最後一個。而且,你正在使用它的ASCII碼,而不是數字值。你必須首先提取所有數字然後轉換它們:

int position = 0; 
int veces = 0; 
string temp = "" 
for (int i = 0; i < m.Length; i++) { 
    if (Char.IsDigit(m[i])) 
    position = i; 
    else 
    break; 
} 
veces = Convert.ToInt32(m.SubString(0, i + 1)); 

或者,您可以使用regex來代替。