Làm cách nào để sử dụng regex để thay thế chữ hoa bằng chữ thường trong Intellij IDEA?


92

Tôi đã googled cho điều này và tìm hiểu cách thực hiện với các trình phân tích cú pháp regex khác:

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions
http://www.regular-expressions.info/replacecase.html

Tôi đã thử những thứ này và không hiệu quả. Ví dụ, tôi muốn sử dụng regex để thay đổi điều này:

private String Name;
private Integer Bar = 2;

Về điều này:

private String name;
private Integer bar = 2;

Tôi đã thử một cái gì đó như thế này:

replace: private (\S+) (\S+)
with: private $1 $L$2
with: private $1 \L$2
with: <etc.>

Không ai trong số họ hoạt động. Có thể làm điều này trong intellij không, hay đây là một tính năng bị thiếu? Điều này chỉ dành cho mục đích giáo dục và ví dụ được đưa ra. Tôi chỉ muốn biết liệu điều này có thể làm được trong intellij hay không.


3
Có lý do gì bạn muốn sử dụng regex không? IntelliJ có một phím tắt phím nóng để làm điều đó.
ajp15243

@ ajp15243 Đây chỉ dành cho mục đích giáo dục và ví dụ được lấy từ nguyên bản. Tôi thực sự muốn biết liệu điều này có thể làm được trong intellij hay không.
Daniel Kaplan

3
Đủ công bằng! Chỉ muốn chắc chắn. Tôi đã tìm thấy tham chiếu Cú pháp IntelliJ Regex và trong các nhận xét, có vẻ ai đó sẽ đặt câu hỏi giống bạn. Một người kiểm duyệt đã trả lời (và tôi nghĩ hơi hiểu sai), nhưng câu trả lời chỉ ra rằng điều này là không thể với cú pháp regex của IntelliJ.
ajp15243

Bạn luôn có thể viết một plugin cho điều đó.
Meo

1
@tieTYT gaoagong của khá tốt, tôi sẽ để anh ấy có nó :).
ajp15243

Câu trả lời:


174

Trong IDEA 15, bạn có thể sử dụng các công tắc bên dưới để chuyển đổi trường hợp của các biểu thức đã chụp. Điều này hiện đã được ghi nhận chính thức kể từ khi phiên bản này được phát hành.

  • \l: viết thường của một ký tự tiếp theo
  • \u: lên trường hợp của một ký tự tiếp theo
  • \L: viết hoa thường của các ký tự tiếp theo cho đến khi a \Ehoặc cuối chuỗi thay thế
  • \U: viết hoa của các ký tự tiếp theo cho đến khi a \Ehoặc cuối chuỗi thay thế
  • \E: đánh dấu sự kết thúc của một thay đổi trường hợp bắt đầu bởi \Uhoặc\L

Dưới đây là một ví dụ sử dụng (vì tài liệu không rõ ràng):

tìm: (\ w + _) + (\ w +) thay thế: \ L $ 1 $ 2 \ E

Ở trên sẽ chuyển đổi FOO_BAR_BAZthành foo_bar_bazvv. $ 1 đề cập đến nhóm bắt được tìm thấy đầu tiên (trong ngoặc đơn), $ 2 đến nhóm thứ hai, v.v.

Vì lợi ích của hậu thế: điều này ban đầu được @gaoagong báo cáo và ghi lại ở đó .


13

Đã tìm kiếm câu trả lời và sau đó nhận ra rằng @ ajp15243 đã trả lời câu hỏi này ở trên. Hiện tại không có cách nào trong Intellij sử dụng tính năng thay thế regex của họ để thay đổi trường hợp của một chữ cái. Có một cuộc thảo luận ngắn tại URL sau về tính năng này.

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

Bạn cũng có thể bỏ phiếu cho tính năng trong vấn đề Youtrack tại đây:

http://youtrack.jetbrains.com/issue/IDEA-70451

Có một plugin regex Intellij, nhưng than ôi nó cũng không hỗ trợ viết hoa thấp hơn và trên.

http://plugins.jetbrains.com/plugin/19?pr=idea

Bạn có thể chỉ phải chạy các tệp thông qua một chương trình perl để thay thế chúng một cách chính xác.


1
Theo youtrack, điều này đã được bổ sung trong phiên bản 15 của IntelliJ
Kevin Sheehan

6

Tôi bắt đầu sử dụng plugin Idea Vim và học cách làm những việc như thế này trong Vim. Bằng cách này, tôi có thể sử dụng lại những kỹ năng này bên ngoài Idea.

Đây là lệnh vim để làm những gì bạn yêu cầu.

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g

Regex đang được nhập trong IDE. Cần có thêm các dấu gạch chéo để thoát khỏi mô hình regex vào Vim.

Trong IDE

Tìm Plugin từ bên trong IDE. nhập mô tả hình ảnh ở đây


2
Một giải pháp lớn có thể sẽ không giúp ích cho 99% người dân ở đây vì họ sẽ không muốn sử dụng mô phỏng VIM. Nhưng, tôi tình cờ đã có cài đặt plugin này để nó làm việc cho tôi :)
Daniel Kaplan

1
Tôi biết .. Vi và Vim lúc đầu có vẻ như là kẻ vô dụng với bất kỳ ai sử dụng IDE. Cuối cùng tôi bắt đầu học Vi sau khi gặp tất cả chúng trong máy chủ. Tôi thực sự thích nó bây giờ tôi không phải chuyển đổi tư duy khi di chuyển giữa các công cụ.
chinto

Tôi chỉ mới bắt đầu với nó, chưa thông thạo. Bạn có nghĩ rằng bạn chỉnh sửa hiệu quả hơn trong Intellij-IDEA với IDEAVim so với trước khi bạn sử dụng Vi?
Daniel Kaplan

1
Ngày càng nhiều .. Tôi đã từng giỏi nhật thực. Sau đó, chuyển đến Intellij và học hầu hết các thủ thuật của nó. Sau đó, nhận ra rằng học Vim sẽ giúp tôi có thể làm tốt Máy chủ và Máy trạm cùng một lúc. Tôi cũng thấy rằng Vim mạnh hơn nhiều trong thao tác và điều hướng văn bản. Tôi vẫn sử dụng các phím tắt IDE cho tất cả các đặc điểm của IDE như tái cấu trúc và tìm kiếm các tham chiếu và chuyển đến định nghĩa, v.v. Tuy nhiên, rất dễ chuyển đổi giữa các chế độ.
chinto

1
Đây là một giải pháp tuyệt vời cho những người biết cách sử dụng vi. Tôi bật IdeaVim khi cần thực hiện các thao tác thay thế phức tạp, sau đó tắt lại để tận hưởng các tính năng biên tập riêng của Idea. Tuy nhiên, tôi ước IdeaVim có một chỉ báo để hiển thị khi nó hoạt động.
LS
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.