Điều gì sẽ là cách tốt nhất và thành ngữ hơn để chia chuỗi thành hai tại vị trí của dấu chấm cuối cùng? Về cơ bản tách phần mở rộng ra khỏi phần còn lại của đường dẫn trong đường dẫn tệp hoặc URL. Cho đến nay những gì tôi đang làm là Split (".") Và sau đó String.Join (".") Của tất cả mọi thứ nhưng phần cuối cùng. Có vẻ như dùng bazooka để giết ruồi.Cách tốt nhất để phá vỡ một chuỗi trên chấm cuối cùng trên C#
Trả lời
Nếu bạn muốn thực hiện, một cái gì đó như:
string s = "a.b.c.d";
int i = s.LastIndexOf('.');
string lhs = i < 0 ? s : s.Substring(0,i),
rhs = i < 0 ? "" : s.Substring(i+1);
Bạn có thể sử dụng Path.GetFilenameWithoutExtension()
hoặc nếu điều đó sẽ không làm việc cho bạn:
int idx = filename.LastIndexOf('.');
if (idx >= 0)
filename = filename.Substring(0,idx);
Chuỗi phương pháp LastIndexOf có thể sử dụng một số bạn ở đây.
Nhưng các toán tử Đường dẫn hoặc FileInfo sẽ phù hợp hơn với các thao tác dựa trên tên tệp.
Tôi nghĩ rằng những gì bạn đang thực sự tìm kiếm là Path.GetFileNameWithoutExtension Method (System.IO) nhưng chỉ dành riêng cho các heck của nó:
string input = "foo.bar.foobar";
int lastDotPosition = input.LastIndexOf('.');
if (lastDotPosition == -1)
{
Console.WriteLine("No dot found");
}
else if (lastDotPosition == input.Length - 1)
{
Console.WriteLine("Last dot found at the very end");
}
else
{
string firstPart = input.Substring(0, lastDotPosition);
string lastPart = input.Substring(lastDotPosition + 1);
Console.WriteLine(firstPart);
Console.WriteLine(lastPart);
}
Để có được con đường mà không có phần mở rộng, sử dụng
System.IO.Path.GetFileNameWithoutExtension(fileName)
và để có được extenstion (bao gồm cả dấu chấm), sử dụng
Path.GetExtension(fileName)
EDIT:
0.123.Thật không may GetFileNameWithoutExtension dải ra khỏi con đường dẫn, vì vậy thay vào đó bạn có thể sử dụng:
if (path == null)
{
return null;
}
int length = path.LastIndexOf('.');
if (length == -1)
{
return path;
}
return path.Substring(0, length);
Nó cũng hoạt động với các url – jmservera
Path.GetExtension()
sẽ giúp bạn.
gì về việc sử dụng phương pháp LastIndexOf mà trả về vị trí tìm thấy cuối cùng của một nhân vật. Sau đó, bạn có thể sử dụng chuỗi con để trích xuất những gì bạn muốn.
Chuỗi.LastIndexOf sẽ trả về vị trí của dấu chấm nếu nó tồn tại trong chuỗi. Sau đó bạn có thể String.Substring phương pháp để chia chuỗi.
Bạn có thể sử dụng phương thức của chuỗi
LastIndexOf và chuỗi con để hoàn thành nhiệm vụ.
- 1. dòng tự động phá vỡ trên chấm trong chuỗi phương thức trong ReSharper
- 2. Chấm dứt một chức năng dựa trên ứng dụng sớm (tương tự như phá vỡ?)
- 3. Cách tốt nhất để buộc một khối thử phá vỡ ở giữa là gì?
- 4. Làm thế nào để phá vỡ một chuỗi trong dòng
- 5. Cách tốt nhất để lấy ID của hàng được chèn cuối cùng trên SQLite
- 6. Làm C# cố gắng cuối cùng CERs phá vỡ trong vòng lặp?
- 7. Làm cách nào để phá vỡ một phương trình dài trên các dòng?
- 8. R: xóa ba dấu chấm cuối cùng khỏi chuỗi
- 9. models.py trở nên to lớn, cách tốt nhất để phá vỡ nó là gì?
- 10. Cách tốt nhất để thực hiện khám phá thiết bị trên mạng LAN
- 11. Java: Cách đơn giản nhất để có được từ cuối cùng trong một chuỗi
- 12. phá vỡ OpenJDK trên processWorkerExit không có breakpoint
- 13. Cách khám phá cam kết có liên quan cuối cùng dựa trên blob/cây băm?
- 14. Phá vỡ các chuỗi dài trên nhiều dòng trong Ruby mà không tước các dòng mới
- 15. Dừng trên bộ lặp phần tử cuối cùng C++
- 16. cách tốt nhất để chuỗi quá tải trên một thuộc tính Moose accessor là gì?
- 17. cách dễ nhất để nhận được mọi từ ngoại trừ từ cuối cùng từ một chuỗi
- 18. Cách dễ dàng để phá vỡ chương trình VB.NET
- 19. Thực hành tốt nhất về mảnh vỡ
- 20. Trong C#, cách tốt nhất để truyền một chuỗi ký tự một dòng trên nhiều dòng nguồn là gì?
- 21. So sánh chuỗi, .NET và không gian phá vỡ
- 22. Regex: làm thế nào để phù hợp với dấu chấm cuối cùng trong một chuỗi
- 23. Có thể loại bỏ cuối cùng từ một định nghĩa lớp phá vỡ khả năng tương thích ngược?
- 24. Liên kết không thể phá vỡ CSS
- 25. Mã hóa Vim: cách phá vỡ nó?
- 26. Phá vỡ một enum Java lớn
- 27. C#: Tại sao đột biến trên cấu trúc chỉ đọc không bị phá vỡ?
- 28. WPF ControlTemplate phá vỡ phong cách
- 29. Netbeans: Làm thế nào để tôi phá vỡ một NullPointerException?
- 30. Cần trích xuất hình cuối cùng sau dấu chấm trong một chuỗi như "7.8.9.1.5.1.100"
Điều đó có hoạt động trên các đoạn URL (sử dụng/thay vì \\) không? Và nó cũng sẽ trả về "thư mục"? Path.GetFilename() chỉ trả về tên của tệp, không có thư mục, AFAIK. – Pablo
Nếu OP chỉ hỏi về đường dẫn tệp, đây sẽ là +1. Nhưng tài liệu System.IO.Path không đề cập đến hỗ trợ cho URL. – OregonGhost
Đúng, nhưng nó có thể đã làm việc cho bạn nếu tên tệp không bao gồm đường dẫn. –