2012-06-27 49 views
5

Tôi cần phải cắt chuỗi con khỏi chuỗi, nếu chuỗi con đó tồn tại.Cắt các ký tự từ một chuỗi

Cụ thể, nếu chuỗi là "MainGUI.exe", thì tôi cần nó để trở thành "MainGUI", bằng cách cắt ".exe" khỏi chuỗi.

Tôi cố gắng này:

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

này mang lại cho tôi câu trả lời chính xác cho "MainGui.exe", nhưng đối với một cái gì đó như "MainGUIe.exe" nó không hoạt động, đem lại cho tôi "MainGUI" thay vì "MainGUIe".

Tôi đang sử dụng C#. Cảm ơn đã giúp đỡ!

Trả lời

15

Sử dụng Path lớp tĩnh trong không gian tên System.IO, nó cho phép bạn tách các tiện ích mở rộng và thư mục khỏi tên tệp dễ dàng. Bạn cũng có thể sử dụng nó để có được phần mở rộng, đường dẫn đầy đủ, vv Đó là một lớp học rất tiện dụng và đáng xem xét.

var filename = Path.GetFileNameWithoutExtension(line); 

Cung cấp cho bạn "MainGui", đây là, tất nhiên, giả sử bạn muốn cắt bất kỳ phần mở rộng tập tin hoặc bạn biết tập tin của bạn sẽ luôn luôn là một tập tin .exe, nếu bạn chỉ muốn cắt phần mở rộng ra của các tệp .exe, tuy nhiên, và để nó trên những tệp khác. Bạn có thể kiểm tra trước tiên bằng cách sử dụng String.EndsWith() hoặc bằng cách sử dụng phương thức Path.GetExtension().

+0

này làm việc, cảm ơn bạn tất cả mọi người vì đã giúp tôi! – nat

13

Tôi sẽ sử dụng Path.GetFileNameWithoutExtension thay vì thao tác chuỗi để xử lý việc này.

string line = “MainGUI.exe”; 
string fileWithoutExtension = Path.GetFileNameWithoutExtension(line); 

Nếu bạn chỉ muốn lột phần mở rộng nếu nó .exe, bạn có thể kiểm tra cho rằng là tốt. Sau đây sẽ chỉ cởi phần mở rộng của .exe, nhưng để lại tất cả các phần mở rộng khác còn nguyên vẹn:

string ext = Path.GetExtension(line).ToLower(); 
string fileWithoutExtension = ext == ".exe" 
           ? Path.GetFileNameWithoutExtension(line) 
           : line; 
+0

Lưu ý rằng điều này sẽ loại bỏ tất cả các phần mở rộng tập tin, không chỉ .exe. Điều đó có thể hoặc không thể là những gì bạn muốn. – Servy

+0

@Servy Bản chỉnh sửa sẽ xử lý trường hợp đó, bây giờ, cũng ... –

3

Nếu bạn luôn cắt ".exe", bạn có thể cắt 4 ký tự cuối cùng bất kể phần còn lại của chuỗi.

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

Vì không có phần mở rộng tập tin có một dấu chấm bên trong nó, bạn là an toàn để sử dụng này (.):

String line = "MainGUI.exe"; 
line = line.Substring(0, line.LastIndexOf('.')); 
Các vấn đề liên quan