I'm trying to replace some characters in a string with their uppercase/lowercase equivalents in Atom Editor.
Let’s say I have the string:
some:test:sequence
and want the result:
Some:Test:Sequence
I’m aware of things like \u$1
and \l$1
, but they do not work in Atom, as Atom is using JS-style RegEx. The JS-RegEx solutions I found, however, always involve calling a function (see example here), which is not possible in Atom, afaik.
Does anyone know if there is a way to achieve this? I also don’t mind installing a package for a more powerful regex search/replace, but haven’t found one and I’d like to avoid writing one on my own just for this.
Please note: I’m not looking for a solution to find/select the characters. The selection works just fine and is a bit more complex as in the example.
This can be done easily using regular expressions. In a substitute command, place \U or \L before backreferences for the desired output. Everything after \U , stopping at \E or \e , is converted to uppercase. Similarly, everything after \L , stopping at \E or \e , is converted to lowercase.
The relevant point for using regex+capturing groups in Atom is knowing how to refer to the captured group in the Replace field. So let's use an example: the pattern below matches and captures a 2-character-word followed by a 3-character-word. There's not much else specific to Atom and regular expressions.
Note that whilst you said the question is not about the selection, I'm using a more simplified example.
If you have a string consisting of: This is a Mixed case String! I want every Letter to Start with A Capital.
You can use the Regex selector of \b\w
to find the first characters of every word in the string. (Done by Cmd + F and clicking .*
on the right hand menu for Regex search)
Now press Alt + Enter to select all of the found results, this should highlight all results of the Regex query. Following this, to make every first letter uppercase you can press Cmd + K -> Cmd + U
, you can modify them however you want from here.
Boom! The string should now look like: This Is A Mixed Case String! I Want Every Letter To Start With A Capital.
I've been looking for an answer for this question for a while, here are my sources for the answer:
arturomp's answer on modifying text (docs included in answer)
johno's answer on how to select all results from a Regex search (Relevant pull request included in answer)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With