How to remove numbers between specific symbols in text array?

Hello everyone,
I have a question regarding how to modify a text array in Matlab which contains numbers between two "_" symbols. Here some examples:
  • If the string has the following structure: "Gas_1_O2" I expect the following result: "Gas_O2". This should work for every number between two "_" symbols.
  • If the string has another structure nothing should happen (e.g. "Time" or "Flow_Fluidization").
The text string will later on be used for renaming a table.
I tried with the function extractBetween but it did not worked as I expected.
Thanks for your support.
Best,
Joseba

 Accepted Answer

a="Gas_1_O2";
regexprep(a,'\_\d*.?\d*\_','_')

5 Comments

Can you explain your regex? I don't get why you're not using
'_[0-9]*_'
or
'_\d*_'
Your code will also remove 1k8 in this example:
a='Gas_1k8_O2';
The code was put keeping only numbers (including decimals) in mind , '_[0-9]*_' or '_\d*_' would fail if there is a decimal number inbetween.
In that case:
regexprep(a,'\_(\d+[\.]?\d*)\_','_')
"The code was put keeping only numbers (including decimals)..."
Remember that . by itself matches all characters, not just the decimal point / period chraacter.
True Stephen that‘s why I used [\.] to preserve dot character in the latter comment.

Sign in to comment.

More Answers (2)

You can use regular expressions for this task:
str1='Gas_1_O2';
str2='Flow_Fluidization';
regexprep(str1,'_[0-9]*_','_')
regexprep(str2,'_[0-9]*_','_')
Hello again,
the script works good, thanks for it. I am facing now a minor problem with "duplicate variable names", due to the following reason:
Before renaming: "Temp_01_free", "Temp_02_free", etc.
After renaming: "Temp_free" in all cases. Is it possible to number the variables then as long as they are repeated? For instance: "Temp_free1", "Temp_free2", etc.
Thanks again!
Joseba

Categories

Community Treasure Hunt

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

Start Hunting!