In Intellij, how do I toggle between camel case and underscore spaced?

后端 未结 5 683
时光取名叫无心
时光取名叫无心 2021-01-29 20:08

At my company we have two different style guides for java vs sql. In java I have a field named historyOfPresentIllness and when i write the sql, I want to name it

相关标签:
5条回答
  • 2021-01-29 20:32

    I use a plugin called String Manipulation which has the capabilities you're looking for (and more).

    Select historyOfPresentIllness and press Alt+M to bring up the plugin menu, then press:

    • 5 - To snake_case (or to camelCase) which converts to history_of_present_illness
    • 6 - To hyphen-case (or to snake_case) which converts to history-of-present-illness

    To make this easier, you could set up a shortcut at File | Settings | Keymap.


    A quick search of the plugin repository for "camel" showed a plugin called CamelCase which does exactly what you're looking for with SHIFT+ALT+U by toggling between various formats:

    historyOfPresentIllness --> history_of_present_illness --> HISTORY_OF_PRESENT_ILLNESS --> HistoryOfPresentIllness --> historyOfPresentIllness

    However, after trying it out, there seems to be a bug with this plugin which prevents you from undoing any changes. Update: it appears this bug has been fixed for a while now, so the CamelCase plugin is probably the way to go.

    0 讨论(0)
  • 2021-01-29 20:33

    From snake_case to CamelCase

    • Find: (\w)[_]{1,1}([a-z])
    • Replace: $1\U$2
    • Settings:
      • Match Case
      • Regex

    From CamelCase to snake_case:

    • Find: ([A-Z])
    • Replace: \_\L$1
    • Settings:
      • Match Case
      • Regex
    0 讨论(0)
  • 2021-01-29 20:49

    Very simple press Clr + F to open Find/Replace panel and check [✓] Regex copy past regex

    Find: [_]{1,1}([a-z])

    Replace: \U$1

    Press [Replace all] button, Enjoy


    Thanks @piotrek for _some_awe_var to _someAweVar

    Use Find: (\w)[_]{1,1}([a-z])
    Replace: $1\U$2

    0 讨论(0)
  • 2021-01-29 20:56

    Answer above is almost perfect, but note that it will change variables like _something or this._something into Something and this.Something. I didn't want that in my case, as leading _ was used to denote "private" variables (old JS project). I slightly modified this approach:

    Find: (\w)[_]{1,1}([a-z])

    Replace: $1\U$2

    This will ensure that only variables with _ is in the middle will be affected.

    0 讨论(0)
  • 2021-01-29 20:59

    If you are OK with PyCharm also refactoring usages, launch the "Rename" tool (Refactor > Rename). The window pops up with drop down list and you should see the snake_case version of the text in the list (you can open the window and switch to the snake_case with key-strokes so it can be pretty fast).

    0 讨论(0)
提交回复
热议问题