Azzera filtri
Azzera filtri

How to remove numbers between specific symbols in text array?

4 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

madhan ravi
madhan ravi il 14 Feb 2019
a="Gas_1_O2";
regexprep(a,'\_\d*.?\d*\_','_')
  5 Commenti
Stephen23
Stephen23 il 14 Feb 2019
"The code was put keeping only numbers (including decimals)..."
Remember that . by itself matches all characters, not just the decimal point / period chraacter.
madhan ravi
madhan ravi il 14 Feb 2019
Modificato: madhan ravi il 14 Feb 2019
True Stephen that‘s why I used [\.] to preserve dot character in the latter comment.

Accedi per commentare.

Più risposte (2)

Rik
Rik il 14 Feb 2019
You can use regular expressions for this task:
str1='Gas_1_O2';
str2='Flow_Fluidization';
regexprep(str1,'_[0-9]*_','_')
regexprep(str2,'_[0-9]*_','_')

Joseba Moreno
Joseba Moreno il 14 Feb 2019
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

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by