2014-06-10 16 views
44

Tôi đã googled cho điều này và tìm ra cách để làm với với phân tích cú pháp regex khác:Tôi có thể sử dụng regex để thay thế chữ hoa bằng chữ thường trong Intellij IDEA bằng cách nào?

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

Tôi đã thử những điều này và không phải làm việc. Như một ví dụ, tôi muốn sử dụng một regex để thay đổi điều này:

private String Name; 
private Integer Bar = 2; 

Để này:

private String name; 
private Integer bar = 2; 

tôi đã cố gắng 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ọ làm việc. Có thể làm điều này trong intellij, hoặc đây là một tính năng thiếu? Điều này chỉ dành cho mục đích giáo dục và ví dụ là giả tạo. Tôi chỉ muốn biết nếu điều này có thể làm trong intellij.

+3

Có lý do nào bạn muốn sử dụng regex không? IntelliJ có [phím tắt hotkey] (https://stackoverflow.com/questions/5265544/intellij-shortcut-to-convert-code-to-upper-or-lower-case) để làm điều đó. – ajp15243

+0

@ ajp15243 Điều này chỉ dành cho mục đích giáo dục và ví dụ này được giả tạo. Tôi thực sự muốn biết nếu điều này có thể làm trong intellij. –

+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] (http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html), và trong phần bình luận, có người sẽ hỏi cùng một câu hỏi như 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

Trả lời

78

Trong IDEA 15 bạn có thể sử dụng công tắc bên dưới để chuyển qua trường hợp của biểu thức bị bắt. Đây là bây giờ officially documented kể từ khi phiên bản này được phát hành.

  • \l: giảm trường hợp của một nhân vật tiếp theo
  • \u: lên trường hợp của một nhân vật tiếp theo
  • \L: giảm trường hợp của các ký tự tiếp theo cho đến khi một \E hoặc kết thúc việc thay thế chuỗi
  • \U: lên trường hợp của các ký tự tiếp theo cho đến khi một \E hoặc sự kết thúc của chuỗi thay thế
  • \E: đánh dấu sự kết thúc một sự thay đổi trường hợp khởi xướng bởi \U hoặc \L

Đây là một cách sử dụng ví dụ (như các tài liệu hướng dẫn không rõ ràng):

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

trên sẽ chuyển đổi FOO_BAR_BAZ-foo_bar_baz vv các $ 1 đề cập đến nhóm chụp tìm thấy đầu tiên (trong ngoặc), $ 2 đến tập thứ hai vv

Vì lợi ích của hậu thế: ban đầu đây là reported bởi @gaoagong và được ghi lại there.

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 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 lá thư. 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 các tính năng trong vấn đề Youtrack đây:

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

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

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

Bạn chỉ có thể có để chạy các tập tin 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 đang được thêm vào trong phiên bản 15 của IntelliJ –

5

Tôi đã bắt đầu sử dụng Idea Vim plugin và tìm hiểu cách thực hiện những việc như thế này trong Vim. Bằng cách này tôi có thể tái sử dụng những kỹ năng này ngoài ý tưởng.

Đâ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 được nhập trong IDE. Các dấu gạch chéo thêm được yêu cầu để thoát khỏi mô hình regex vào Vim.

Within The IDE

Tìm plugin từ bên trong IDE. enter image description here

+1

Giải pháp lớn có thể sẽ không giúp 99% số người ở đây vì họ sẽ không muốn sử dụng mô phỏng VIM. Nhưng, tôi tình cờ đã có plugin này được cài đặt vì vậy nó hoạt động cho tôi :) –

+0

Tôi biết .. Vi và Vim có vẻ như vô dụng ác khi bắt đầu với bất cứ ai sử dụng một 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ích nó bây giờ mà tôi không phải chuyển đổi suy nghĩ khi tôi di chuyển giữa các công cụ. – chinto

+0

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

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