我正在关注互联网上的教程,为了我的目的,我稍微改变了代码,现在它无法正常工作.我选择了一个路径OpenFileDialog
,然后尝试用反斜杠拆分所选文件,如下所示
C:\的Inetpub \日志\ LogFiles文件\ W3SVC1
它总是返回form1
文件名,做错了什么?
string filename(string text) { string s = Text; string[] arr = s.Split('\\'); string[] dot = arr[arr.Length - 1].Split('.'); return dot[0]; } private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); textBox1.Text = ofd.FileName; label1.Text = filename(textBox1.Text); }
Yair Nevet.. 12
并且它总是返回form1而不是文件名,出错了什么?
你没有text
在filename()
方法中拆分字符串参数,但很可能Text
是你的属性Form
(注意 C#是区分大小写的,Text
并且text
完全是2个不同的东西):
string filename(string text) { string s = Text; string[] arr = s.Split('\\'); ...
所以改成它:
string s = text;
此外,正如其他人所建议的那样,您可以使用可以Path.GetFileNameWithoutExtension()
轻松为您提供所需逻辑的方法:
var result = Path.GetFileNameWithoutExtension(fileName);
Roy Dictus.. 6
调用您的方法参数,text
但您可以拆分找到的内容Text
.C#区分大小写,因此Text
必须是表单上的属性...
顺便说一句,您可以使用LINQ使您的代码更具可读性.例如,您可以替换arr[arr.Length - 1]
为arr.Last()
.不是你要求的,而是奖金提示.
编辑 Yair的评论System.IO.Path.GetFileNameWithoutExtension()
当然是正确的.甚至比自己拆分并使用LINQ获取零件更好.
调用您的方法参数,text
但您可以拆分找到的内容Text
.C#区分大小写,因此Text
必须是表单上的属性...
顺便说一句,您可以使用LINQ使您的代码更具可读性.例如,您可以替换arr[arr.Length - 1]
为arr.Last()
.不是你要求的,而是奖金提示.
编辑 Yair的评论System.IO.Path.GetFileNameWithoutExtension()
当然是正确的.甚至比自己拆分并使用LINQ获取零件更好.
并且它总是返回form1而不是文件名,出错了什么?
你没有text
在filename()
方法中拆分字符串参数,但很可能Text
是你的属性Form
(注意 C#是区分大小写的,Text
并且text
完全是2个不同的东西):
string filename(string text) { string s = Text; string[] arr = s.Split('\\'); ...
所以改成它:
string s = text;
此外,正如其他人所建议的那样,您可以使用可以Path.GetFileNameWithoutExtension()
轻松为您提供所需逻辑的方法:
var result = Path.GetFileNameWithoutExtension(fileName);