Is there a less bug-prone way to include quote in selector string variable when defining opt.TableSelector?
Ältere Kommentare anzeigen
My situation is to readtable( ) several tables, each of which has a specific title, from an html file. I have come up with a couple solutions to define TableSelector, but it is bug prone. Is there a better way?
opt = htmlImportOptions;
opt.TableSelector = "//TABLE[contains(.,'Cash dividends')]";
headings = ["'Music'", "Photo"];
%% correct selector string, but bug prone
opt.TableSelector = "//TABLE[contains(.," + headings(1) +")]";
opt.TableSelector
% readtable(html, opt)
%% wrong solution
opt.TableSelector = "TABLE[contains(.,"+ headings(2) +")]";
opt.TableSelector
% readtable(html, opt) % would return no error message, so it's a bug source.
%% fix the wrong solution
str1 = "TABLE[contains(.,'";
str2 = "')]";
opt.TableSelector = str1 + headings(2) + str2;
opt.TableSelector
% readtable(html, opt)
3 Kommentare
Walter Roberson
am 15 Mai 2023
Is it possible that the headings to use could ever contain ' themselves? If so then it will be necessary to protect against that.
Walter Roberson
am 15 Mai 2023
Reading further, I see that we do not need to worry about "escape characters" -- for example if the user specified 'Music\' then the \' would be treated as two distinct unrelated characters, not as indicating "the next character is a literal quote". So we do not need to "sanitize" the input against an assortment of characters.
We do, however, potentially need to worry about the possibility that the headings contain ' characters or " characters.
Simon
am 17 Mai 2023
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!