2012-11-26 38 views
5

Sử dụng Thay thế Nhanh trong Visual Studio 2010, làm cách nào tôi có thể thay thế tất cả trừ văn bản được bao quanh bởi dấu ngoặc kép. Tôi không chắc chắn nếu tôi có thể sử dụng WildCards hoặc Regex để làm điều này. Một ví dụ dưới đây.Tìm và Thay thế Tất cả Nhưng Văn bản Giữa Dấu ngoặc kép trong VS2010

Đây là mã gốc:

TypeByName("bPhone3", "9999"); 
TypeById("bFirstName", "Don"); 

và tôi muốn thay thế các văn bản với một cái gì đó như thế này:

Type("bPhone3", "9999", Selector.Name); 
Type("bFirstName", "Don", Selector.Id); 

tôi đang làm điều này trong vài trăm thay đổi, vì vậy nhanh Thay thế là sự lựa chọn thực sự duy nhất của tôi ngay bây giờ. Tôi cần phải tìm cách để giữ bất cứ điều gì trong dấu ngoặc kép và thay đổi văn bản xung quanh nó.

+0

Văn bản không được trích dẫn luôn giống nhau không? –

+0

Có. Điều duy nhất thay đổi là văn bản được trích dẫn. – Andrew

Trả lời

4

Vì vậy, tôi đã làm việc với các tùy chọn tìm và thay thế của Visual Studio và điều này thực sự có thể sử dụng biểu thức RegEx và được gắn thẻ. Tôi sử dụng này và nó hoạt động cho các chuỗi bạn liệt kê.

Tìm gì: TypeBy{(.*)}\({"[^"]*"}, {"[^"]*"}\);

Replace with: Type(\2, \3, Selector.\1);

Ghi gắn thẻ 'sử dụng biểu thức thông thường' và bạn sẽ có vàng

Thông tin thêm về biểu thức được gắn thẻ có thể được tìm thấy here

Chỉnh sửa: cập nhật một chút khi tôi nhận thấy yo u có cả tên và ID, có thể cần phải thực hiện một vài thay đổi khác tùy thuộc vào các quirks nhỏ khác trong những gì bạn muốn thay đổi.

+0

+1 đánh bại tôi với nó, và tôi đã gặp rắc rối với vòng (vs quăn {niềng răng ... –

+0

@ebyrob Yeah nó đã cho tôi một vài cố gắng để làm cho nó đúng, đó thực sự là một cái gì đó tôi chưa bao giờ được sử dụng trước đây trong VS, rất Tính năng mát mẻ (mặc dù một chút thích hợp) –

+0

Tôi luôn luôn thử nó mà không có niềng răng xoăn mà tôi nghĩ là lý do tại sao tôi đã gặp rất nhiều rắc rối trong quá khứ (tôi thường shell out vim cho công cụ này thay vì ở trong IDE) –

0

có thể bạn đang tìm kiếm một cơ refactoring nơi bạn có thể nhấp chuột phải vào một biểu tượng, và sau đó đi đến refactor và sau đó rename

cho giải pháp cụ thể của bạn, bạn cũng có thể bắt đầu với tái cấu trúc, và sau đó toying xung quanh với các thông số mặc định

public void Type(string str1, string str2, string str3 = "Default String") 
{ 
    ... 
+0

Tôi muốn làm điều này thông qua Tìm và Thay thế, không phải thông qua mã. – Andrew

+0

Tôi xem xét tái cấu trúc, nhưng điều này là do nhiều phương pháp được loại bỏ và hợp nhất thành 1 phương pháp với một tham số thứ 3 được thêm vào để xác định những gì 'Selector' để tìm kiếm. – Andrew

+0

@Andrew Tôi vừa cắt bớt bài đăng của mình xuống để chỉ phản ánh rằng –

3

Bạn có thể làm điều này với biểu thức thông thường trong Visual Studio tìm và thay thế:

Find: TypeByName\((\".+?\"),\ (\".+?\")\); 01. Thay thế: Type($1, $2, Selector.Name);

Trong đó sẽ biến
TypeByName("bPhone3", "9999"); vào
Type("bPhone3", "9999", Selector.Name);

Sửa
bạn cũng có thể làm điều này:

Find: TypeBy(.+)\((\".+?\"),\ (\".+?\")\);
Thay thế: Type($2, $3, Selector.$1);

.210

Trong đó sẽ biến
TypeByName("bPhone3", "9999"); vào
Type("bPhone3", "9999", Selector.Name);

TypeById("bFirstName", "Don"); vào
Type("bFirstName", "Don", Selector.Id);

cơ bản Hóa TypeBy{1}({2}, {3}) vào Type({2}, {3}, Selector.{1})

lưu ý rằng tôi thử nghiệm này trong VS2012, VÀ CNTT CÓ THỂ KHÁC BIỆT CHO VS2010

+0

Tôi đã thử lần thứ hai trong VS2010 và dường như không hoạt động. Cảm ơn bạn đã trả lời kỹ lưỡng như vậy! – Andrew

Các vấn đề liên quan