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 .

link|improve this question
feedback

2 Answers

up vote 2 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.
link|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
feedback

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

%s/_\([a-zA-Z]\)/\u\1/g

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.

link|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
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.