Extracting numbers from mixed string
19 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Matt J
le 20 Sep 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'}
Réponses (3)
Ameer Hamza
le 20 Sep 2020
Modifié(e) : Ameer Hamza
le 20 Sep 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 commentaires
Ameer Hamza
le 20 Sep 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
le 20 Sep 2020
Modifié(e) : Star Strider
le 20 Sep 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 commentaire
Star Strider
le 20 Sep 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
le 20 Sep 2020
Modifié(e) : Mario Malic
le 20 Sep 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.
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!