2011-08-30 175 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”