我知道人们普遍认为 usingstrcmp
是比较字符串的正确方法,但我的问题是为什么?根据帮助:
A == B 在 A 和 B 之间进行逐个元素的比较,并返回一个大小相同的矩阵,其中元素设置为逻辑 1,表示关系为真,元素设置为逻辑 0,表示关系不成立。
我能想出的所有玩具例子似乎都奏效了。
我知道人们普遍认为 usingstrcmp
是比较字符串的正确方法,但我的问题是为什么?根据帮助:
A == B 在 A 和 B 之间进行逐个元素的比较,并返回一个大小相同的矩阵,其中元素设置为逻辑 1,表示关系为真,元素设置为逻辑 0,表示关系不成立。
我能想出的所有玩具例子似乎都奏效了。
==
使用逐字符比较,因此尝试==
使用两个不同长度的字符串测试是否相等应该会给您一个错误。
strcmp
还检查输入是否为 char 类,例如,strcmp('a',double('a'))
返回 false,但'a' == double('a')
返回 true。strcmp
干净地处理空输入,您也不必担心两个字符串的长度相同。您可以使用单元格输入轻松比较多个有用的字符串。
字符串比较可能会慢很多——至少在当前的 Matlab 中是这样。但是不要以牺牲可读性和可维护性为代价过早地优化你的代码。仅在您确实需要性能并且非常确定要比较的内容(例如,首先使用和)的极少数情况下使用==
(或可能)。isequal
ischar
isempty
另一个小例外是空字符串。
使用'' == ''
in if 语句的计算结果为 false。
strcmp('','')
是真的。