Dot notation from string
25 次查看(过去 30 天)
显示 更早的评论
Hi,
Is there any way to convert string with dots do a dot notation?
Let S be a structure, I want to get
I store a "path" to field to a string
path = ['field1.field2.field3'];
I want to get to a specified field3, instead of
S.field1.field2.field3
I want to call it like this, without separating it by dots.
S.(path)
If I put it like this, it treats the whole string like one name of field.
The reason is that I use a loop which creates the string "path", depending on existance of fields in each "depth" - the substructures are inconsistent. I want the "depth" (number of dots) to be variable.
THX
3 个评论
采纳的回答
Steven Lord
2020-3-31
DON'T use eval. There's no need to use it in this case anyway. split the text representation of the nested fields into pieces then pass those pieces into getfield as a comma-separated list.
S.field1.field2.field3 = 42;
P = 'field1.field2.field3';
pathPieces = split(P, '.');
theAnswer = getfield(S, pathPieces{:})
Things get trickier if you have a more complicated indexing expression, but take a look at the help and documentation for getfield for how to handle such situations.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!