传递字符串为int到子
问题描述:
我目前得到这样的用户数:传递字符串为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”添加一个值,以便我可以从文件名中删除该值。
谢谢。
答
NumericUpDown的Value属性是Decimal - 这也许就是为什么你有问题。在你的if块中,我会考虑将NumericUpDown对象的Value属性转换为真实部分的整数,并在其他部分使用整数值3。在那之后,我会避免再次解析并将其作为子字符串。
答
你说你要从name
删除所有的rchars
出现,那你为什么使用Substring
?如果你想从name
删除string rchars
那么就保持它作为一个字符串,并使用String.Replace
:
string snub = name.Name.Replace(rchars, String.Empty);
此外,NumericUpDown
的Value
属性是decimal
,不是int
。
答
你是否正在寻求用别的东西替换文件名中的值“3”/删除它?像这样:
原始文件:
string fiename = "myfile3.mp3";
移除/替换(在这种情况下3)选定数目:
string num = "3";
filename.replace(num, "");
应以文件名 “myfile.mp3”
结束我无法弄清楚你的意思吗?如果num是一个int,它将作为子字符串的参数。你将它解析为一个int值num,所以它应该作为子串调用的一部分...不是将一些随机数字解析成子串而没有检查它不超过长度是个好主意... – kmcc049
暴露的问题对我来说不是很干净... 它导致了几种解释。 如果你需要删除一部分字符串,你应该使用函数Remove或Replace,或者只是使用正则表达式。 string snub = name.Name.Replace(rchars,“”); 这将从name.Name字符串中替换rchars的所有东西,并将结果放入sbub变量中。 但我想这不是你正在寻找的东西,这听起来对我来说是没有用的。 –
问题中的代码对我来说很好,可以删除文件夹中所有文件的文件名中的前n个字符,并将其移至另一个文件夹。由于NumericUpDown控件只能使用数字值(它不允许使用字符串),所以我尝试在不使用Up或Down的情况下将值设置为12,并且它仍然有效。如果上面的代码不适合你,请让我们知道吗?或者,除了删除前n个字符之外,还希望代码执行其他操作吗? – Kash