我有一个问题。问题如下: 如何比较Matlab中的String?
我有一个变量,它被称为数据。此变量表示当前存在子字符串时我想要比较的当前字符串。
我有很多不同的可能性,这就是我想使用Switch-Statement的原因。
在代码示例中,您可以看到带有变量的开关"数据"。如果变量包含子串'开始'应执行以下案例。否则"否则"应该使用声明。
我希望你能理解我想做的事。感谢您的帮助和支持。
function testObj = workflow(testObj, data)
switch data
case strfind(data, 'Start')>5
disp('Yes')
case strfind(data, 'End')>10
disp('Yes')
case strfind(data, 'NewTest')>15
disp('Yes')
otherwise
disp('No')
end
end
文档:
切换块有条件地从多个选项中执行一组语句。每个选择都是一个案例。
评估的switch_expression是标量或字符串。评估 case_expression是标量,字符串或标量或单元格的数组 字符串。开关模块测试每种情况,直到其中一种情况发生 真正。以下情况属实:
对于数字,eq(case_expression,switch_expression)。
对于字符串,strcmp(case_expression,switch_expression)。
对于支持eq功能的对象, 当量(case_expression,switch_expression)。
对于单元格数组case_expression,至少有一个元素 cell数组匹配switch_expression,如上面对数字所定义, 字符串和对象。
当一个案例成立时,MATLAB执行相应的语句,并且 然后退出开关块。
否则是可选的,只有在没有大小写的情况下才会执行。
答案 0 :(得分:0)
开关的工作方式不同,正如您所写,您可以在case
语句中选择可能需要的完整数据值
switch strfind( data, 'Start') > 5
case true
disp( 'Yes')
otherwise
disp( 'No')
end
或使用if
为此,更短。
答案 1 :(得分:0)
您解释说,您希望在data
中搜索的内容字符串有很多种可能性。如果您使用switch data
,则始终会使用data
将strcmp
与其他字符串进行比较。这可能对完成程序的填写没有帮助。任务,因为strcmp
比较相等,而不是包含。
如果您不想使用if
,elseif
等,则一个选项就是循环。将所有可能的字符串保存在单元格数组中,让它调用它compareStrings
,并遍历数组。
for ii = 1:length(compareStrings)
if strfind(data,compareStrings{ii})
disp('Yes')
disp (compareStrings{ii})
end
end