diary_file = tempname();
diary(diary_file);
myFun();
diary('off');
output = fileread(diary_file);
我想从output
搜索字符串,但也要忽略空格和大/小写。以下是output
中的内容示例:
the test : passed
number : 4
found = 'thetest:passed'
a = strfind(output,found )
如何忽略output
中的空格和案例?
答案 0 :(得分:2)
假设你并不担心意外匹配如下:'thetEst:passed'
这就是你可以做的事情:
删除所有空格,仅比较小写
found = 'With spaces'
found = lower(found(found ~= ' '))
这将返回
found =
withspaces
当然,您还需要对每行输出执行此操作。
答案 1 :(得分:2)
另一种方式:
regexpi(output(~isspace(output)), found, 'match')
如果output
是单个字符串,或
regexpi(regexprep(output,'\s',''), found, 'match')
更常见的情况(class(output) == 'cell'
或 'char'
)。
优点:
缺点:
两个列表中的最后一点很容易使用lower()
或upper()
强制降低或大写,但如果你想要相同的情况,那就更多了:
C = regexpi(output(~isspace(output)), found, 'match');
if ~isempty(C)
C = found; end
表示单个字符串,或
C = regexpi(regexprep(output, '\s', ''), found, 'match')
C(~cellfun('isempty', C)) = {found}
更一般的情况。
答案 2 :(得分:0)
您可以使用lower
将所有内容转换为小写以解决您的案例问题。然而,忽略你想要的空白是有点棘手。看起来你想要保留一些空格但不是全部,在这种情况下你应该用空格分割字符串并逐个比较子字符串。
答案 3 :(得分:0)
我会使用正则表达式做广告,例如像这样:
a = regexpi(output, 'the\s*test\s*:\s*passed');
如果你不关心匹配发生的位置,但只有完全匹配,删除所有空格将是一种蛮力,有点讨厌,可能性:
a = strfind(strrrep(output, ' ',''), found);