2012-06-27 163 views
5

如果該子字符串存在,我需要修剪字符串中的子字符串。修改字符串中的字符

具體來說,如果字符串是「MainGUI.exe」,那麼我需要它通過從字符串中修剪「.exe」變成「MainGUI」。

我嘗試這樣做:

 String line = "MainGUI.exe"; 
    char[] exe = {'e', 'x', 'e', '.'}; 
    line.TrimEnd(exe); 

這讓我對「MainGui.exe」正確的答案,但對於類似「MainGUIe.exe」這是行不通的,給我「MainGUI」,而不是「MainGUIe」。

我正在使用C#。謝謝您的幫助!

回答

15

System.IO命名空間中使用Path靜態類,它允許您輕鬆地從文件名剝離擴展名和目錄。你也可以用它來獲得擴展名,完整路徑等。這是一個非常方便的類,非常值得研究。

var filename = Path.GetFileNameWithoutExtension(line); 

給你「MainGui」,這是當然,假設你要修剪任何文件擴展名,或者您知道您的文件始終將是一個.exe文件,如果你想只修剪過的擴展的.exe文件,但是,並將其留在其他人。您可以先使用String.EndsWith()或使用Path.GetExtension()方法進行測試。

+0

這工作,謝謝大家對我的幫助! – nat

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; 
+0

請注意,這將剝離所有文件擴展名,而不僅僅是.exe。這可能是也可能不是你想要的。 – Servy

+0

@Servy現在編輯也應該處理這種情況,以及... –

3

如果您總是修剪「.exe」,則無論字符串的其餘部分如何,您都可以修剪最後4個字符。

line.Substring(0, line.Length - ".exe".Length); 
3
string line = "MainGUI.exe"; 
if (line.EndsWith(".exe")) 
    line = line.Substring(0, line.Length - 4); 
0

由於沒有文件擴展名有一個點內,你可以安全地使用這個(。):

String line = "MainGUI.exe"; 
line = line.Substring(0, line.LastIndexOf('.'));