【发布时间】:2013-08-06 15:30:25
【问题描述】:
这可能是一个简单的问题,我正在 VS 2012 中编写一个 WinForms C# 应用程序。我想知道是否有办法在文本框中的某些内容中添加 .csv 之类的扩展名。假设用户在 C:\Users\Desktop\filename 中写入,但省略了路径的 .csv 部分。单击执行按钮后,有什么方法可以添加 .csv 吗?
任何帮助将不胜感激。
【问题讨论】:
这可能是一个简单的问题,我正在 VS 2012 中编写一个 WinForms C# 应用程序。我想知道是否有办法在文本框中的某些内容中添加 .csv 之类的扩展名。假设用户在 C:\Users\Desktop\filename 中写入,但省略了路径的 .csv 部分。单击执行按钮后,有什么方法可以添加 .csv 吗?
任何帮助将不胜感激。
【问题讨论】:
您可以使用Path.ChangeExtension。
// Nota bene: Path.ChangeExtension does not change textBox1.Text directly (or any
// argument given), you MUST use the result if you care about it.
string newPath = Path.ChangeExtension(textBox1.Text, "csv");
句点是可选的,文件名部分不需要包含扩展名。
作为将来的参考,如果您能想到某事,您需要处理文件或目录的路径...它存在于System.IO.Path 中。很少有人不支持该类中的常见任务。
【讨论】:
textBox1.Text?
textBox1.Text 没有通过引用传递,因此Path.ChangeExtension 无法修改引用。在 C# 中,几乎假设如果您使用的是字符串(“不可变对象”),那么 only 更新 that instance 的方法是存储结果 back进入那个实例。 (就像x + 1 实际上并没有增加x。)
如果您不想更改字符串中的有效扩展名,您可以这样做:
// first test for an extension
if(!Path.HasExtension(textBox1.Text.Trim()))
{
// then add on '.csv' if one does not exist
string path = Path.ChangeExtension(textBox1.Text.Trim(), ".csv");
// ... use path ...
}
【讨论】: