Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对反斜杠分割感到困惑吗_C#_Split - Fatal编程技术网

C# 对反斜杠分割感到困惑吗

C# 对反斜杠分割感到困惑吗,c#,split,C#,Split,我正在网上学习一个教程,为了我的目的我稍微修改了代码,现在它不起作用了。我使用OpenFileDialog选择了一个路径,然后尝试用反斜杠拆分所选文件,如下所示 C:\inetpub\logs\LogFiles\W3SVC1 它总是返回form1而不是文件名,我做错了什么 string filename(string text) { string s = Text; string[] arr = s.Split('\\'); string[] dot = arr[arr.

我正在网上学习一个教程,为了我的目的我稍微修改了代码,现在它不起作用了。我使用
OpenFileDialog
选择了一个路径,然后尝试用反斜杠拆分所选文件,如下所示

C:\inetpub\logs\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);
}
它总是返回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);
}
您没有在
filename()
方法中拆分字符串
text
参数,但很可能是
表单的
text
属性(注意C是,
text
text
完全是两个不同的东西):

因此,将其更改为:

string s = text;
此外,正如其他人所建议的,您可以使用能够轻松提供所需逻辑的方法:

var result = Path.GetFileNameWithoutExtension(fileName);

您的方法参数被称为
text
,但您可以拆分在
text
中找到的内容。C#区分大小写,因此
文本
必须是表单上的属性

顺便说一下,您可以使用LINQ使代码更具可读性。例如,您可以用
arr.Last()
替换
arr[arr.Length-1]
。不是你要的而是一个额外的小费


EDITYair关于
System.IO.Path.GetFileNameWithoutExtension()
的评论当然是恰到好处的。甚至比自己拆分并使用LINQ获取部件更好。

您不需要手动解析它。您有一种方法可以做到这一点:

string file = Path.GetFileNameWithoutExtension(text);
C#区分大小写,文本和文本引用不同的值。在这种情况下,应更换:

string s = Text;


“text”是传递给filename函数的参数。

Path.GetFileNameWithoutExtension()
string s = text;