Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I can write a regular expression in NP++ to find under_score_case. I can use TextFX in NP++ to change case to upper and lower case by highlighting and selecting.

How can I use either NP++'s Find/Replace or TextFX's find and replace to stitch these together and convert under_score_case to camelCase?

I want to learn how to do this in NP++ not use a script.

Sample input:

this is_a_line
some more_data_over_here
whoop de_do_da

Desired output:

this isALine
some moreDataOverHere
whoop deDoDa

The regex to match the underscores would be _([a-z]). The replacement that I think exists, but I cannot find is something like _\toupper\1 .

share|improve this question
up vote 4 down vote accepted

I have a solution that's long and convoluted, but will work in Notepad++. It requires the use of regex, optionally normal search and replace, as well as TextFX.

  1. Add a placeholder character to the front of each word, I chose Z. It probably doesn't have to be alphabetic, but it's easier for the last step. Using regex, search for \<([^ ]*)\> and replace with Z\1.
  2. Replace existing spaces with a unique placeholder sequence. I chose #space#. This can be done with regex, but I prefer using normal or expanded.
  3. Replace underscores with spaces. If there are any underscores that shouldn't be replaced, then a custom regex is probably required. I just did a straight search and replace.
  4. Select all text, and from the TextFX menu, select TextFX Characters -> Proper Case.
  5. Now we need to reverse the first 3 steps. Search for spaces, and replace them with nothing. Then search for your space placeholder sequence, and replace with a space. Finally, using regex, search for \<Z([^ ]*)\> and replace with \1.
share|improve this answer
Convoluted, but it works. – Freiheit Jul 19 '11 at 13:01
Notepad++'s failings with regex have caused me to come up with solutions like this before, specifically when I need to find and replace across lines or use special characters, like tab. – MBraedley Jul 19 '11 at 13:31
As an aside, has the project lead on NP++ (Mr. Ho as I recall) made any noises about introducing vim-like replacement support? Any plugins to support that? NP++ and TextFX are really powerful, they just need a bit more to stitch them together. – Freiheit Jul 19 '11 at 13:33
I don't really follow the project, but I imagine that he's constrained by the use of Scintilla. – MBraedley Jul 19 '11 at 13:39
One caveat: If the second and subsequent character in each word is an uppercase letter, it is made lowercase, e.g. ALL_CAPS becomes allCaps. – Gnubie Jun 26 '12 at 10:26

I typically use vim myself as an editor. The following regular expression accomplishes what you're trying to do in vim:


From what I can tell (I fooled around with NP++ for a bit), Notepad++ does not understand the uppercase macro \u in Perl Regexp. You may not be able to do this entirely with Notepad++. Hopefully, someone will prove me wrong and make your day.

share|improve this answer
Yea I'm stuck in a Windows environment. Copying the data over to a *nix or OS X machine works, but its hardly graceful. I can also cross-train other teammates on NP++. – Freiheit Jul 18 '11 at 20:10
I think the same expression works in eMacs. My eMac knowledge is hazy . . . – surfasb Jul 18 '11 at 20:27
@Freiheit There is a vim for windows; although that won't help with the crosstraining other teammates to NP++ – Matrix Mole Jul 19 '11 at 0:49
This actually seems to work fine in recent versions of Notepad++ (I'm using 6.7.7). – levant pied Sep 1 '15 at 18:33

You can do this with one step in notepad++, which is probably more useful:

Find: ([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)\.php
Replace: $1\U$2\L$3\U$4\L$5\U$6\L$7

The only issue with this, is that you need to know the max time the under score can be present and how the string ends. In the above example, i'm replacing php file names to camelCase, knowing that the under score cannot be present more than 3 times, less is no problem.

share|improve this answer

A simple find/replace will do this in NP++:

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

Replace: \U$1

You need to select the 'Regular expression' radio button in the Replace panel for this to work.

share|improve this answer
Or just _(.) as the search string. – Dominic Comtois Jan 28 at 19:53

My personal favourite is sed. It is lightning fast:

> echo make_me_camel_case_please | sed -e 's/(_[a-z])/\U\1/g' -e 's/_//g'


You can use the -i option to perform the replace on a file you are editing and N++ should pick up the change.

This will also delete all underscores, as with some above solutions. That can be fixed if this is an issue.

share|improve this answer

I ran into this problem and found out an excellent solution

  1. Replace all underscores("_") with spaces (" ")

  2. Change the first letter of each word to a capital letter

  3. Replace all spaces (" ") with an empty space ("")

  4. Done.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .