Is it possible to use regexprep to insert a '*' between a number following a letter?

4 views (last 30 days)
I have a an excel file containing cells of letters and number. I want to add a * symbol every time a number comes directly after a letter.
Some examples of the individual cells are,
28Si+H3
13C+D3
23Na
C2+H4
13C2+H2
So I want search each one and if a number follows a letter to put * in between.
28Si+H3 would become 28Si+H*3
  3 Comments
Image Analyst
Image Analyst on 30 Aug 2018
Edited: Image Analyst on 30 Aug 2018
Because 28 is not letters A-Z. And, even though it's after 28, Si is not a number. If it were Si28, it would become Si*28, but it's not so you leave it alone.

Sign in to comment.

Accepted Answer

Rik
Rik on 30 Aug 2018
Now I'm awake again: you can also do this in a oneliner:
str='C2+H4-28D';
m=regexprep(str,'([A-Za-z])(\d)','$1*$2');
  4 Comments
Rik
Rik on 30 Aug 2018
@Stephen, you're welcome. I still struggle with regular expressions sometimes, but the best way to learn them is to just start. I still grab the doc for regexp whenever I'm writing a regexp, even simple ones.
PS if this solved your question, please consider marking it as accepted answer
@jonas, your post gave me something I could easily adapt. As someone once told me: a good programmer is lazy, i.e. borrow and tweak working code whenever you can ;)
stephen geddes
stephen geddes on 30 Aug 2018
Haven't posted any questions until today. Didn't know I should do that! Thanks again.

Sign in to comment.

More Answers (0)

Categories

Find more on Characters and Strings in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!