How to search a word both uppercase and lowercase given a specified string?

조회 수: 23 (최근 30일)
MIM Maestro puts volume data inside the table variable names:
Rectum (4)(Volume: 57.77) Bladder (5)(Volume: 139.40)
However, sometimes the name is lowercase, e.g. 'bladder'. If one wishes to pull the volume '139.40' from the CSV file, how can one search for both 'Bladder' and 'bladder' in a single query given an input string?
The following function only searches the entered string with regexp; if the input organ string is 'Bladder', doesn't regexp neglect 'bladder'?
function output = GetVolumesFromDVH(organ)
[omitting code to loop through multiple files...]
searchstring = [organ,'_'];
[...]
output(fileloop) = GetOrgVol(filepath,searchstring);
[...]
end
function volume = GetOrgVol(filepath,searchstring)
% get list of variable names
opts = detectImportOptions(filepath, 'NumHeaderLines', 1);
% we find the column containing the organ volume
OrganSearching = regexp(opts.VariableNames,searchstring);
for loop = 1:numel(opts.VariableNames)
if OrganSearching{loop} == 1
index = loop;
end
end
% extract volume from said string
volume = extractAfter(opts.VariableNames{index},'Volume_');
volume = sscanf(strrep(volume,'_','.'),'%f');
end
  댓글 수: 1
Daniel Bridges
Daniel Bridges 2018년 3월 15일
편집: Daniel Bridges 2018년 3월 15일
I wonder if one can use the StringToUpper function (C library?) together with an 'or'-type command and lowercase input string to search both terms.

댓글을 달려면 로그인하십시오.

채택된 답변

Star Strider
Star Strider 2018년 3월 15일
The regexpi (link) function is the case-insensitive version of regexp.
  댓글 수: 3
Star Strider
Star Strider 2018년 3월 15일
As always, my pleasure!
Thanks for the info on R2018a. I didn’t know it was available. (It wasn’t when I checked a earlier this week.) I’ll follow your lead.
Daniel Bridges
Daniel Bridges 2018년 3월 15일
R2018a executed it in 6 s rather than 25 s, and clear and trying again it did so in 1 s. Hooray!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2018년 3월 15일
Just cast the string to lower and use a lower case template:
if contains(lower(yourString), 'bladder')
% yourString contains bladder somewhere in it
end
or you might use strcmpi() if you're sure there is no other characters in your string other than the template you're searching for:
if strcmpi(yourString, 'bladder')

카테고리

Help CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by