partial match of 2 string vectors with different lenghts

2 vues (au cours des 30 derniers jours)
PH
PH le 6 Juin 2018
Commenté : Rik le 7 Juin 2018
Hi everyone,
I hope you can help me. I have two 2 string arrays (str1 and str2) with different lengths. For instance,
str1= ["16-10-2017 09:20:00"; "16-10-2017 09:21:00"; "16-10-2017 09:22:00"; "16-10-2017 09:23:00"] ]
str2= ["16-10-2017 09:21:00_water"; "16-10-2017 09:23:00_coffee"] ]
I would like to:
(1) match the first 19 characters of a str2 (in this case it is 16-10-2017 09:21:00) with str1
(2) create str3 that will give me a string array like this str3=[0;"16-10-2017 09:21:00_water";0;"16-10-2017 09:23:00_coffee"] So when there is an overlap use the value in str2 in str3, when there is no overlap use 0 or NAN.
Thanks,

Réponses (1)

Rik
Rik le 6 Juin 2018
Modifié(e) : Rik le 6 Juin 2018
Something like this:
str1= ["16-10-2017 09:20:00"; "16-10-2017 09:21:00"; "16-10-2017 09:22:00"; "16-10-2017 09:23:00"];
str2= ["16-10-2017 09:21:00_water"; "16-10-2017 09:23:00_coffee"];
temp=arrayfun(@extract_date,str2);
L=ismember(str1,temp);
str3=str1;
str3(~L)=0;
str3(L)=str2;
function date=extract_date(str)
str=char(str);
date=string(str(1:19));
end
  5 commentaires
PH
PH le 7 Juin 2018
Thanks, the code works with these strings. However, I tried the code with my original data and it did give me an error. str1's value is 6196x1 and str2's value is 14x1.
(In an assignment A(:) = B, the number of elements in A and B must be the same. Error in matching_code (line 5) str3(L)=str2;)
Rik
Rik le 7 Juin 2018
Then the dates in str2 are non-unique. So which should be selected?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by