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

4 Ansichten (letzte 30 Tage)
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 Kommentare
Image Analyst
Image Analyst am 30 Aug. 2018
Bearbeitet: Image Analyst am 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Rik
Rik am 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 Kommentare
Rik
Rik am 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 am 30 Aug. 2018
Haven't posted any questions until today. Didn't know I should do that! Thanks again.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by