Tôi phải tiếp quản dự án C#. Người phát triển phần mềm ở nơi đầu tiên đã yêu sâu sắc với #region
vì anh ta bọc mọi thứ với các vùng. Nó làm cho tôi gần như điên rồ và tôi đang tìm kiếm một công cụ hoặc addon để loại bỏ tất cả #region
từ dự án. Có cái gì xung quanh?xóa #region
Trả lời
Chỉ cần sử dụng Visual Studio tích hợp trong "Find and Replace" (hoặc "Thay thế trong Files", bạn có thể mở bằng cách nhấn tổ hợp phím Ctrl + phím Shift +H).
Để xóa #region
, bạn cần bật đối sánh cụm từ thông dụng; trong hộp thoại "Thay thế trong tệp", chọn "Sử dụng: Biểu thức chính quy". Sau đó, sử dụng mẫu sau: "\#region .*\n
", thay thế các kết quả phù hợp bằng ""
(chuỗi rỗng).
Để xóa #endregion
, hãy làm tương tự, nhưng sử dụng "\#endregion .*\n
" làm mẫu của bạn. Cụm từ thông dụng có thể là quá mức cần thiết cho #endregion
, nhưng sẽ không bị tổn thương (trong trường hợp nhà phát triển trước đó để lại nhận xét trên cùng một dòng với tên #endregion
hoặc thứ gì đó).
Lưu ý: Những người khác đã đăng các mẫu sẽ hoạt động cho bạn, chúng hơi khác so với tôi nhưng bạn có ý tưởng chung.
Đó là cuộc nói chuyện điên rồ. – RQDQ
Yep ... nó cũng có giới hạn cú pháp RegEx nếu cần. – Oded
Sử dụng [regexp] phù hợp (http://msdn.microsoft.com/en-us/library/2k3te2cs%28v=VS.100%29.aspx) hoặc [ký tự đại diện] (http://msdn.microsoft.com/ en-us/library/afy96z92% 28v = VS.100% 29.aspx). – Vlad
Tìm và thay thế sử dụng {[#]<region[^]*}
cho Find what:
và thay thế bằng chuỗi trống. #EndRegion
đủ đơn giản để thay thế.
Bạn có thể sử dụng các ký tự đại diện tìm/thay thế:
*\#region *
*\#endregion
Và thay thế không có giá trị. (Lưu ý rằng #
cần phải được thoát, vì stuido trực quan sử dụng nó để khớp với "bất kỳ số nào")
@downvoters: Điều này khác biệt như thế nào với câu trả lời được chấp nhận? –
Bạn đã bắt đầu nhận được phiếu giảm giá có thể vì tùy chọn "ký tự đại diện" đã bị xóa trong VS2012. VS2010 có tùy chọn này - so sánh https://msdn.microsoft.com/en-us/library/a40ywt0a(v=vs.100).aspx và https://msdn.microsoft.com/en-us/library/a40ywt0a (v = vs.110) .aspx). Thật không công băng. – CoperNick
Sử dụng một regex ^[ \t]*\#[ \t]*(region|endregion).*\n
để tìm cả hai: vùng và kết thúc. Sau khi thay thế bằng chuỗi rỗng, toàn bộ dòng có khoảng trắng phía trước sẽ bị xóa.
[ \t]*
- không gian phát hiện hàng đầu
\#[ \t]*(region|endregion)
- tìm thấy #region hoặC#endregion (và cũng có thể trường hợp rất hiếm hoi với các không gian sau khi #)
.*\n
- tìm thấy tất cả mọi thứ sau #region hoặC#endregion (nhưng trong cùng một dòng)
EDIT: Trả lời thay đổi để tương thích với cú pháp regex Visual Studio cũ. Là:
(dấu hỏi không làm việc cho cú pháp cũ)^[ \t]*\#(end)?region.*\n
EDIT 2: Thêm [ \t]*
sau # để xử lý trường hợp rất hiếm tìm thấy bằng @Volkirith
Bạn thưa bạn, là một người tiết kiệm cuộc sống! Tôi phải kế thừa một dự án là mọi phương pháp đều được bao bọc trong một khu vực. Mỗi phương pháp duy nhất! – Draco
Tôi đã thêm một [\ t] * khác giữa # và (vùng) -> một cách thận trọng cũng có giá trị để có khoảng trống ở đó và dev tôi kế thừa mã mà tôi phải dọn dẹp khá không nhất quán. Biểu thức đầy đủ tôi đã sử dụng:^[\ t] * \ # [\ t] * (vùng | phần cuối). * \ N – Volkirith
Thực sự Awsome :) (Y) –
Nếu bạn có hợp tác với những người yêu thích khu vực (và giữ khu vực bị ảnh hưởng), sau đó tôi muốn giới thiệu "I hate #Regions" tiện ích Visual Studio. Nó làm cho các vùng có thể chấp nhận được - tất cả các vùng được mở rộng theo mặc định và chỉ thị #region được hiển thị với phông chữ rất nhỏ.
Đối với bất kỳ ai sử dụng ReSharper, nó chỉ đơn giản là Atr-Enter trên dòng khu vực. Sau đó, bạn sẽ có tùy chọn xóa các vùng trong tệp, trong dự án hoặc trong giải pháp.
tuyệt vời! R # đã có rất nhiều tính năng tuyệt vời mà tôi đã mất dấu vết của tất cả những gì có thể. – gsharp
Để loại bỏ #region với một dòng mới sau nó, thay thế sau đây với chuỗi rỗng:
^(?([^\r\n])\s)*\#region\ ([^\r\n])*\r?\n(?([^\r\n])\s)*\r?\n
Để thay thế #endregion với một dòng trống hàng đầu, thay thế sau đây với một chuỗi rỗng:
^(?([^\r\n])\s)*\r?\n(?([^\r\n])\s)*\#endregion([^\r\n])*\r?\n
Khu vực có phải là điều xấu hay bạn đang nói quá mức sử dụng? Trong một dự án trước, chúng tôi đã được dạy để thiết lập các vùng cho các sự kiện, các nhà xây dựng, các thuộc tính, các phương thức công cộng, các phương thức riêng, các biến riêng cho mỗi lớp. – JonWillis
Tôi đoán đó là vấn đề về hương vị. Tôi không thấy bất kỳ lợi ích nào khi sử dụng chúng. Đối với tôi, điều đáng lo ngại là không nhìn thấy mã hoặc nhấp vào khu vực để mở nó. – gsharp
@JonWillis - Nói chung tôi không nghĩ rằng các khu vực là xấu nhưng họ có xu hướng che giấu các vi phạm Nguyên tắc duy nhất về trách nhiệm. –