Extracting numbers from mixed string
Mostra commenti meno recenti
I need to extract the four-digit information that is before the period. With these commands that I have, only the zero digit comes out. How can I proceed to obtain the 4 zero digits?
str = 'preci_CZ_02000_20200101_0000.txt';
out = extractBetween(str,25,28);
Thanks!
2 Commenti
Matt J
il 20 Set 2020
That's not what I get. I get all four digits.
>> str = 'preci_CZ_02000_20200101_0000.txt';
out = extractBetween(str,25,28)
out =
1×1 cell array
{'0000'}
pink flower
il 20 Set 2020
Risposte (3)
Ameer Hamza
il 20 Set 2020
Modificato: Ameer Hamza
il 20 Set 2020
Your current code will only work if all the strings have equal length.
For a general case, try using regex
str = 'preci_CZ_02000_20200101_0000.txt';
out_str = regexp(str, '\_([0-9]{4})\.', 'tokens');
out_str = out_str{1}{1};
4 Commenti
pink flower
il 20 Set 2020
Modificato: pink flower
il 20 Set 2020
Ameer Hamza
il 20 Set 2020
What is the error? You can use str2num() to convert the values to numeric format.
pink flower
il 20 Set 2020
Ameer Hamza
il 20 Set 2020
I didn't understand the problem. Can you show how do you want to use the output. That will be helpful in suggesting a solution.
Star Strider
il 20 Set 2020
Modificato: Star Strider
il 20 Set 2020
Another approach:
str = 'preci_CZ_02000_20200101_0000.txt';
out = regexp(str, '(?:\d{4})\>','match');
producing:
out =
1×1 cell array
{'0000'}
EDIT — (20 Sep 2020 at 4:40)
I do not have ‘files.name’, however this approach works and is efficient:
str = compose('preci_CZ_02000_20200101_%04d.txt', 0:5:20).' % Create File Vector
out = regexp(str, '(?:\d{4})\>','match'); % Extract Last Four Digits Before Dot
hm = string([out{:}]).' % Display Results
producing:
str =
5×1 cell array
{'preci_CZ_02000_20200101_0000.txt'}
{'preci_CZ_02000_20200101_0005.txt'}
{'preci_CZ_02000_20200101_0010.txt'}
{'preci_CZ_02000_20200101_0015.txt'}
{'preci_CZ_02000_20200101_0020.txt'}
hm =
5×1 string array
"0000"
"0005"
"0010"
"0015"
"0020"
.
1 Commento
Star Strider
il 20 Set 2020
Note: My code here was quoted in: How can I to convert a cell to a double without losing the leading zeros?
Mario Malic
il 20 Set 2020
Modificato: Mario Malic
il 20 Set 2020
Variable str is actually a char array, you can get last 4 characters before dot by
newstr = str(end-7:end-4)
To get it in double, you can use str2num function.
Categorie
Scopri di più su Characters and Strings in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!