2011-08-30 34 views
0

我目前得到這樣的用戶數:傳遞字符串爲int到子

 if (checkBox1.Checked) 
     { 
      rchars = numericUpDown1.Value.ToString(); 
     } 
     else 
     { 
      rchars = "3"; 
     } 

串rchars;是一個全局變量。

所以,我試圖從文件名移除rchars。 例如從文件名中的前三個字母:

  int num = Int32.Parse(rchars); 
      foreach (FileInfo name in fpaths.GetFiles("*.mp3") 
      { 
       string snub = name.Name.Substring(num); 
       MessageBox.Show(snub); 
       System.IO.File.Move(blah + name.Name, newblah + snub); 
      } 

我的問題是如何獲得「NUM」在子工作?因爲我不能把它看作是一種價值。因爲我想從numericUpDown傳遞它。將make「num」添加一個值,以便我可以從文件名中刪除該值。

謝謝。

+1

結束我無法弄清楚你的意思嗎?如果num是一個int,它將作爲子字符串的參數。你將它解析爲一個int值num,所以它應該作爲子串調用的一部分...不是將一些隨機數字解析成子串而沒有檢查它不超過長度是個好主意... – kmcc049

+0

暴露的問題對我來說不是很乾淨... 它導致了幾種解釋。 如果你需要刪除一部分字符串,你應該使用函數Remove或Replace,或者只是使用正則表達式。 string snub = name.Name.Replace(rchars,「」); 這將從name.Name字符串中替換rchars的所有東西,並將結果放入sbub變量中。 但我想這不是你正在尋找的東西,這聽起來對我來說是沒有用的。 –

+0

問題中的代碼對我來說很好,可以刪除文件夾中所有文件的文件名中的前n個字符,並將其移至另一個文件夾。由於NumericUpDown控件只能使用數字值(它不允許使用字符串),所以我嘗試在不使用Up或Down的情況下將值設置爲12,並且它仍然有效。如果上面的代碼不適合你,請讓我們知道嗎?或者,除了刪除前n個字符之外,還希望代碼執行其他操作嗎? – Kash

回答

2

NumericUpDown的Value屬性是Decimal - 這也許就是爲什麼你有問題。在你的if塊中,我會考慮將NumericUpDown對象的Value屬性轉換爲真實部分的整數,並在其他部分使用整數值3。在那之後,我會避免再次解析並將其作爲子字符串。

1

你說你要name刪除所有的rchars出現,那你爲什麼使用Substring?如果你想從name刪除string rchars那麼就保持它作爲一個字符串,並使用String.Replace

string snub = name.Name.Replace(rchars, String.Empty); 

此外,NumericUpDownValue屬性是decimal,不是int

+0

,因爲'rchars'是一個類似''3「'的值,意思是」從文件名中刪除前3個字母「 – Jimmy

+0

@Jimmy:那問題是什麼?它應該只是工作。您應該簡單地將'rchars'聲明爲'int',因爲這是'String.Substring'所期望的。沒有理由把這個東西強加給一個字符串,然後再回來。此外,(技術上)在C#中沒有像全局變量那樣的東西。 –

+0

好吧,我其實也不明白這個問題,但是OP確實會說'例如,[從文件名中移除]前三個字符',所以我並不認爲它有意成爲替代品。 – Jimmy

0

你是否正在尋求用別的東西替換文件名中的值「3」/刪除它?像這樣:

原始文件:

string fiename = "myfile3.mp3"; 

移除/替換(在這種情況下3)選定數目:

string num = "3"; 
filename.replace(num, ""); 

應以文件名 「myfile.mp3」