Comparing two equal strings doesnt work
Información
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
Mostrar comentarios más antiguos
I have a list of strings (containing hockey player names) and I want to find the index for a specific name.I never had such an easy problem before and it is driving my insane.
I tried this:
player and index are both "Connor McDavid"
player = Player(1);
index1 = string(200);
logic = strcmp(index1 ,player);
Here are screenshots too ensure that they contain the same value.


logic should return a 1 but it returns 0. I tried == too but it doesnt help.
Pls help me, i dont know what to do anymore.
9 comentarios
Walter Roberson
el 19 de Oct. de 2019
string(200) is "200" since R2016b unless you have a variable named "string" in scope. If you do then is it a string object or a cell array of character vectors, or a character vector?
Christian Schumacher
el 19 de Oct. de 2019
Christian Schumacher
el 20 de Oct. de 2019
Convert both strings to numbers and tell us what the result it. I'm thinking the space is different. Type this
player + 'A'
index1 + 'A'
Edit: you seem to have solved it while I was writing this. But my hunch was right!
Christian Schumacher
el 20 de Oct. de 2019
Walter Roberson
el 20 de Oct. de 2019
player{1}+0
index1{1}+0
You need to extract the characters from the string object to look at the character codes
Christian Schumacher
el 20 de Oct. de 2019
Haha, oh yeah, they are strings.
char(player)-'A'
Walter Roberson
el 20 de Oct. de 2019
160 is U+00A0, "non-breaking space"
player = replace(player, char(160), ' ');
index1 = replace(index1, char(160), ' ');
but it would probably make more sense to replace all of the 160 in your data source (perhaps immediately after retrieving it) instead of doing the replacement each iteration.
Respuestas (1)
Prasad Parameswaran
el 22 de Oct. de 2019
Editada: Prasad Parameswaran
el 22 de Oct. de 2019
This can be solved by using the "ismember" function, refer the below example:
A = ["John"; "Lee" ; "James"; "Lee"];
B = "Lee";
index = ismember(A,B)
The output is
index =
4×1 logical array
0
1
0
1
La pregunta está cerrada.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
