如果存在子字符串,我需要修剪字符串中的子字符串。
具体来说,如果字符串是“MainGUI.exe”,那么我需要通过从字符串中修剪“.exe”来成为“MainGUI”。
我试过了:
String line = "MainGUI.exe";
char[] exe = {'e', 'x', 'e', '.'};
line.TrimEnd(exe);
这给了我“MainGui.exe”的正确答案,但对于像“MainGUIe.exe”这样的东西它不起作用,给我“MainGUI”而不是“MainGUIe”。
我正在使用C#。谢谢你的帮助!
答案 0 :(得分:15)
使用Path
命名空间中的System.IO
静态类,它允许您轻松地从文件名中删除扩展名和目录。你也可以使用它来获得扩展,完整路径等。这是一个非常方便的课程,值得深入研究。
var filename = Path.GetFileNameWithoutExtension(line);
给你“MainGui”,这当然是假设你想修剪任何文件扩展名,或者你知道你的文件总是一个.exe文件,如果你只想修剪.exe文件的扩展名然而,留在别人身上。您可以先使用String.EndsWith()
或使用Path.GetExtension()
方法进行测试。
答案 1 :(得分:13)
我会使用Path.GetFileNameWithoutExtension代替字符串操作来处理这个问题。
string line = “MainGUI.exe”;
string fileWithoutExtension = Path.GetFileNameWithoutExtension(line);
如果你只想删除.exe
扩展名,你也可以检查它。以下内容仅会删除.exe
的扩展名,但保留所有其他扩展名:
string ext = Path.GetExtension(line).ToLower();
string fileWithoutExtension = ext == ".exe"
? Path.GetFileNameWithoutExtension(line)
: line;
答案 2 :(得分:7)
Path
班级有GetFileNameWithoutExtension
。
答案 3 :(得分:3)
如果你总是修剪“.exe”,无论字符串的其余部分如何,你都可以修剪最后4个字符。
line.Substring(0, line.Length - ".exe".Length);
答案 4 :(得分:3)
string line = "MainGUI.exe";
if (line.EndsWith(".exe"))
line = line.Substring(0, line.Length - 4);
答案 5 :(得分:0)
由于没有文件扩展名包含点(。),因此您可以安全地使用它:
String line = "MainGUI.exe";
line = line.Substring(0, line.LastIndexOf('.'));